gpt4 book ai didi

c# - 抽象类中返回 IEnumerable 的静态方法

转载 作者:行者123 更新时间:2023-11-30 14:16:57 24 4
gpt4 key购买 nike

有没有办法将静态方法放在可以返回派生类型的抽象类中?

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

关于c# - 抽象类中返回 IEnumerable<DerivedType> 的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6666548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com