从继承具体 class 到抽象 class 的类型推断
Type inference on abstract class from inheriting concrete class
我在这里想做的是从具体继承 class 的类型推断出抽象 class 的类型 T。
例如,我有一个通用摘要class:
public abstract class MyAbstract<T> where T : class {
//Methods...
}
还有一个继承具体 class 继承 MyAbstract
:
public class MyConcrete : MyAbstract<MyConcrete> {
//Methods..
}
现在,我这工作得很好,但我发现这个抽象 class 很冗长,因为它总是继承 class 的类型。我知道可以对方法进行泛型类型推断(谢谢 Jon Skeet http://joelabrahamsson.com/a-neat-little-type-inference-trick-with-c/),但我似乎无法找到一种方法来完成上述操作。
理想情况下,我会
//Type T on MyAbstract is inferred to be MyConcrete.
public class MyConcrete : MyAbstract {
//Methods...
}
我想要的有可能吗?
我的问题在评论中得到了解决。对于那些寻找的人来说,这是不可能的。
然而,我只需要基础class中子class的类型信息,所以我最终在基础class方法中实现了类型推断。
我的代码最终看起来像这样
public abstract class MyAbstract {
DoSomething<T>(T caller){
//foo
}
}
具体来说:
public class MyConcrete : MyAbstract {
base.DoSomething(this);
}
感谢 JacquesB 帮助我。
我在这里想做的是从具体继承 class 的类型推断出抽象 class 的类型 T。
例如,我有一个通用摘要class:
public abstract class MyAbstract<T> where T : class {
//Methods...
}
还有一个继承具体 class 继承 MyAbstract
:
public class MyConcrete : MyAbstract<MyConcrete> {
//Methods..
}
现在,我这工作得很好,但我发现这个抽象 class 很冗长,因为它总是继承 class 的类型。我知道可以对方法进行泛型类型推断(谢谢 Jon Skeet http://joelabrahamsson.com/a-neat-little-type-inference-trick-with-c/),但我似乎无法找到一种方法来完成上述操作。
理想情况下,我会
//Type T on MyAbstract is inferred to be MyConcrete.
public class MyConcrete : MyAbstract {
//Methods...
}
我想要的有可能吗?
我的问题在评论中得到了解决。对于那些寻找的人来说,这是不可能的。
然而,我只需要基础class中子class的类型信息,所以我最终在基础class方法中实现了类型推断。
我的代码最终看起来像这样
public abstract class MyAbstract {
DoSomething<T>(T caller){
//foo
}
}
具体来说:
public class MyConcrete : MyAbstract {
base.DoSomething(this);
}
感谢 JacquesB 帮助我。