gpt4 book ai didi

C# 泛型 - 试图找到模式的名称

转载 作者:太空狗 更新时间:2023-10-30 00:35:02 25 4
gpt4 key购买 nike

我一直在努力寻找 C# 中泛型使用模式的名称,但我不知道有比堆栈溢出更好的资源了!

我正在做的是创建直接将派生类传递到其中的通用基类 - 我查找并查找了此示例或模式名称,我希望这个社区的一位伟大成员能够帮帮我。

我在 http://www.mobiusbay.com/home/alittlesomethingimcallingcascadinggenerics 上写了一篇关于它如何工作的文章但是如果你不想在那里阅读它,它的一个例子如下:

public abstract class IndexedMemberBase<TDerivedClass> : IDisposable where 
TDerivedClass : IndexedMemberBase<TDerivedClass>
{
#region Declarations & Properties
private static List<TDerivedClass> derivedInstances = new List<TDerivedClass>();
public static List<TDerivedClass> DerivedInstances
{
get { return derivedInstances; }
}
#endregion

#region Constructor(s)
public IndexedMemberBase()
{
if (derivedInstances == null) derivedInstances = new List<TDerivedClass>();
derivedInstances.Add((TDerivedClass)this);
}
#endregion

#region Methods
public void Dispose()
{
if (derivedInstances.Contains(this) == true)
{
derivedInstances.Remove((TDerivedClass)this);
}
}
#endregion
}

那是基类,派生类可以非常简单——例如:

public class IndexMember : IndexedMemberBase<IndexMember>
{
//Add all the crazy business you could ever want!
}

那段代码将指向派生类的每个实例的指针放入一个静态集合中以供一般使用——该集合对于每个派生类都是不同的,因此您不会与静态存在于基类中的它发生冲突。我发现它在我的项目中非常有用,我希望其他人也能找到它的用处。

需要指出的重要一点是,派生类在泛型签名中将自身传递给基类。

如果有人看到这个模式在使用中,或者知道它的名字 - 我真的很想看到一些例子,或者至少用正确的名字来调用它!现在,我称它为递归泛型,因为它看起来很合适,但我相信还有更好的名字!

非常感谢您的帮助!

亚当

最佳答案

它叫做 Curiously Recurring Template Pattern

(出于某种原因,它只是在 SO 上非常非常有名?)

关于C# 泛型 - 试图找到模式的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5923198/

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