加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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代表您域中的某些东西(它们是更具体的派生类型)并且它知道如何加载所有这些对象?这是两个责任,这不是很酷的哟.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读