我正在用 C# 编写基于工厂模式的解决方案。
如果有一个名为Animal
的抽象类
,Animal
的任何子类都将通过传递类型的工厂模式实例化。
public abstract class Animal
{
protected abstract void Constructor();
public Animal()
{
Constructor();
}
}
public class Dog : Animal
{
protected override void Constructor()
{
//Constructor Code here
}
}
我不会让我的任何队友通过在子类中声明自己的公共(public)构造函数(例如:cat)并直接调用构造函数(例如:Animal cat = new Cat( );
) 不使用工厂。
如何创建在编译此类时会抛出错误的代码分析规则?
最佳答案
几个选项:
您可以将类、它的派生类和工厂放入它自己的程序集中,并使类的构造函数成为内部类。如果工厂方法是公共(public)的,那么任何引用程序集的东西都只能通过工厂创建它。
另一种选择是使工厂嵌套在 Animal 类中,例如:
public abstract class Animal
{
protected abstract void Constructor();
protected Animal()
{
Constructor();
}
public class Factory
{
public static Animal CreateAnimal()
{
return new Animal();
}
}
}
关于c# - 自定义规则 - 禁用子类的构造函数实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41952714/