考虑这个带有泛型的声明:
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/