在接口方法中访问接口实现者的类型

时间:2012-02-18 23:59:36

标签: c# c#-4.0

public interface IMy<T>
{
    T Implementer
    {
        get;
    }
}
public class MyClass : IMy<MyClass>
{
    ...
}

但我想要的是:

public interface IMy
{
    I Implementer
    {
        get;
    }
}

请接受,出于某些原因我需要一个接口来定义一个返回实现者类型的方法。没有?好的,假设它类似于XML浏览器,所以请调用我的接口ITree

接口主要帮助我组织(分离),但是当我有一个需要我依赖约定时,它似乎打败了目的。

2 个答案:

答案 0 :(得分:1)

您无法静态指定此类返回类型。在C#(和CLR)中没有“thistype”。但是你可以在运行时找到它:

var thisType = this.GetType()

由于我不认为这是你所需要的,所以我必须告诉你,你不可能做你想做的事。

当然,你的第一个代码片段工作,但你不希望这样。

答案 1 :(得分:1)

您希望能够说“接口应该知道是谁实现它,并自动在其定义中提供实现者的类型,由实现者继承”?像

public interface IMy
{
    ImplicitImplementerType SomeProperty
    {
        get;
    }
}

我很确定这是不可能的。这样的事情可以通过更动态的语言来实现(我在这里猜测)。