考虑这个带有泛型的声明:

public class BaseNode<TNode> where TNode : BaseNode<TNode>
{
    public class Node : BaseNode<Node>
    {
        public Node() { }
    }
}

有没有办法从基类外部创建类 Node 的实例?我以前使用过这种模式,但总是将派生类留在基类之外。

你如何在没有编译器错误的情况下编写以下内容?
var obj = new BaseNode<Node>.Node();
// error CS0246: The type or namespace name 'Node' could not be found

我创建了一个不可实例化的类吗?可以通过反射初始化吗?

最佳答案

你可以实例化那个怪物。您所要做的就是创建自己的继承自 Node 的类:

public class MyNode : BaseNode<MyNode>.Node
{
}

然后你可以像这样实例化它:
BaseNode<MyNode> obj = new BaseNode<MyNode>();

但是,您为什么要这样做完全是另一回事......

关于c# - 如何实例化这个类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11298817/

10-11 11:46