c# – 抽象类中的静态方法,用于返回IEnumerable
发布时间:2020-12-16 01:45:28 所属栏目:百科 来源:网络整理
导读:有没有办法将静态方法放在可以返回派生类型的抽象类中? 静态方法是否知道甚至在C#中调用它的类型? 例如,基类可以是 public abstract class MyBase{ public static IEnumerableTDerivedType LoadAll() { //functionality here }} 然后,如果MyDerivedType继
有没有办法将静态方法放在可以返回派生类型的抽象类中?
静态方法是否知道甚至在C#中调用它的类型? 例如,基类可以是 public abstract class MyBase { public static IEnumerable<TDerivedType> LoadAll() { //functionality here } } 然后,如果MyDerivedType继承了MyBase,我希望能够调用MyDerivedType.LoadAll() 没有什么太重要 – 我目前正在使用通用的静态方法并调用MyBase.LoadAll< MyDerivedType>(),它工作正常,但它看起来并不像那样“漂亮”. 解决方法
静态成员不是继承的,因此必须以某种方式告诉静态方法派生类型是什么.您的解决方案是一种方式.另一个是以下内容:
public abstract class MyBase<T> where T : MyBase<T> { public static IEnumerable<T> LoadAll() { } } 然后: class Derived : MyBase<Derived> { } var all = MyBase<Derived>.LoadAll(); 也就是说,我认为你的模型有问题. MyBase代表您域中的某些东西(它们是更具体的派生类型)并且它知道如何加载所有这些对象?这是两个责任,这不是很酷的哟. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |