【发布时间】:2017-02-22 13:43:48
【问题描述】:
情况是这样的。我有一个类和一个派生类
public class MyClass
{ }
public class MyDerivedClass : MyClass
{ }
我还有一个方法(在外部类中),它以MyClass 的实例为参数:
public class AnotherClass {
public void DoSomething(MyClass myClass)
{ }
}
如何限制DoSomething 方法只接受MyClass 的实例,而不接受MyDerivedClass 的实例?
【问题讨论】:
-
你为什么要这样做?
-
你不能。您可以在运行时检查类型并抛出异常,但编译器无法阻止
-
你要求的是反对面向对象的编程,MyDerivedClass 是 MyClass。就像“我不想要车,但我想要一辆法拉利!”
-
@Esko,谢谢。这对我来说很有用,因为我不确定我是否做对了。我的问题很简单:我有一个类和一个派生类,它们共享相同的功能,但这些类的实例存储在不同的数据库中,我希望有不同的方法来操作那里的内容,而不是根据类型选择合适的数据库类的实例
-
@Esko 你的类比是相反的。这就像说,“我会接受任何存在的汽车,但我不接受法拉利。”