public interface IMy<T>
{
T Implementer
{
get;
}
}
public class MyClass : IMy<MyClass>
{
...
}
但我想要的是:
public interface IMy
{
I Implementer
{
get;
}
}
请接受,出于某些原因我需要一个接口来定义一个返回实现者类型的方法。没有?好的,假设它类似于XML浏览器,所以请调用我的接口ITree
。
接口主要帮助我组织(分离),但是当我有一个需要我依赖约定时,它似乎打败了目的。
答案 0 :(得分:1)
您无法静态指定此类返回类型。在C#(和CLR)中没有“thistype”。但是你可以在运行时找到它:
var thisType = this.GetType()
由于我不认为这是你所需要的,所以我必须告诉你,你不可能做你想做的事。
当然,你的第一个代码片段会工作,但你不希望这样。
答案 1 :(得分:1)
您希望能够说“接口应该知道是谁实现它,并自动在其定义中提供实现者的类型,由实现者继承”?像
public interface IMy
{
ImplicitImplementerType SomeProperty
{
get;
}
}
我很确定这是不可能的。这样的事情可以通过更动态的语言来实现(我在这里猜测)。