Вы можете просто сделать Node
общедоступным и сохранить внутренние производные классы. Не имея отношения к этому, вы должны думать о том, чтобы не выводить Node
во вложенные классы для лучшей ремонтопригодности:
public abstract class Node {
}
internal class ANode : Node {
public byte[] internalValue;
}
internal class BNode : Node {
public int internalValue;
}
Если вы хотите иметь возможность создавать экземпляры ANode
и BNode
из внешних сборок , вы можете использовать абстрактный завод:
public static class NodeFactory {
public Node CreateNode(byte[] value) {
return new ANode { internalValue = value };
}
public Node CreateNode(int value) {
return new BNode { internalValue = value };
}
}