泛型的 C# 接口访问实现者类型

C# interface access implementers type for generic

有没有办法让接口自动为实现者通用class?

例如,我想创建一个接口,该接口将 return 从实施 class 中委托。 (实际上我希望它是return一个多函数数组,但我在这里进行了简化。)

以下应该有效:

public interface IParentFinder<ChildClass> 
{
    Func<ChildClass, int> GetParentIdFunction();
}

然后要实现它,我必须这样写:

public class AClass : IParentFinder<AClass>
{
    int id;
    int parentId;

    static public Func<AClass, int> GetParentIdFunction()
    {
        return c => c.parentId;
    }
}

但是我只希望在通用模板与实现相匹配的地方使用此接口 class。有没有我可以使用的便利,这样我就可以这样写:

public class AClass : IParentFinder
{
    ...
}

我希望有一些 baseType 参数可以用来指定泛型的基类型。例如:

public interface IParentFinder
{
    Func <baseType, int> GetParentIdFunction();
}

为清楚起见进行了编辑

不,C# 中没有执行此操作的功能。

与任何其他参数一样,无论是方法参数还是泛型参数,泛型接口类型参数都需要一个参数。没有参数的参数根本不是参数。

也许 C# vNext 可以实现类似默认通用参数值的东西:

public class A<T> where T : default(string) { ... }

...或者谁知道呢。但是,就目前而言,通用参数 需要一个参数 。而且,毕竟,这不符合您在您的情况下寻找的内容 - 自动神奇推断的通用参数... -.