C# 强制定义精确类
假设我有几门课:C# 强制定义精确类,c#,class,polymorphism,C#,Class,Polymorphism,假设我有几门课: public class ParentClass { <common functionality> ... } public class ChildClass : ParentClass { <additional functionality> ... } 我以后无法将东西定义为: thing = new ChildClass(); 我希望多态性达到ChildClass继承所有ParentClass功能的程度,但我不
public class ParentClass
{
<common functionality>
...
}
public class ChildClass : ParentClass
{
<additional functionality>
...
}
我以后无法将东西定义为:
thing = new ChildClass();
我希望多态性达到ChildClass
继承所有ParentClass
功能的程度,但我不希望在定义对象时使用更具体的类。我可以以某种方式不允许这样做吗?当然,我可以将父类
抽象化,但这样我就不能拥有父类
类型的对象,而且有时我确实需要它们。确保这一点的唯一方法是将定义的工厂传递给代码,然后创建父类,而不允许其他子类
public ParentClass thing;
thing = ParentClassFactory.Build();
问题是将工厂推到您的代码中,但它可以让您控制此时设置的实例类型。这可能适用于更简单的系统,但对于我们使用的引擎,这几乎是不可能的。我们甚至不允许使用不遵循特定指导原则的构造函数(它们必须有两个特定的指定参数,不能有更多),更不用说任何类型的工厂场景了。如上所述,它与我们正在进行的XML序列化有关。我认为这涉及到思考,但这不属于我的部门。在这种情况下,我真的不明白,如果你没有改变构建机制的余地,你怎么能强制一种类型。该死。我似乎记得有一些关键字,比如explicit
,可以做这类事情,但在这种情况下似乎不起作用。(我可能在想另一种语言?)。不管怎样,它主要用于bug搜索——例如,如果我将一个对象的类从子对象更改为父对象,我希望看到红色的错误标记显示我需要更新的代码中的每个地方(如果换一种方式,它会起作用),但我可以用我认为乏味的方式来完成。
public ParentClass thing;
thing = ParentClassFactory.Build();