C#   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c# – 抽象类中的静态方法,用于返回IEnumerable大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法将静态方法放在可以返回派生类型的抽象类中?

静态方法是否知道甚至在C#中调用它的类型?

例如,基类可以是

public abstract class MyBase
{
    public static IEnumerable<TDerivedType> LoadAll()
    {
        //functionality here
    }
}

然后,如果MyDerivedType继承了MyBase,我希望能够@L_137_2@myDerivedType.LoadAll()

没有什么太重要 – 我目前正在使用通用的静态方法并@L_137_2@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代表您域中的某些东西(它们是更具体的派生类型)并且它知道如何加载所有这些对象?这是两个责任,这不是很酷的哟.

大佬总结

以上是大佬教程为你收集整理的c# – 抽象类中的静态方法,用于返回IEnumerable全部内容,希望文章能够帮你解决c# – 抽象类中的静态方法,用于返回IEnumerable所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。