在方法参数中接受一组有限的子类型

时间:2009-08-21 23:32:16

标签: c# .net .net-3.5 subtype

这是使用C#和.net 3.5

假设我有以下方法:

myMethod(myBaseClass mbc)

在我的项目中,以下所有类都继承自myBaseClass。

ot1:myBaseClass
ot2:myBaseClass
ot3:myBaseClass
ot4:myBaseClass

是否有任何技巧可以让我使用myTethod和ot1和ot3但不是ot2和ot4,或者我基本上必须为我想要允许的每种类型重载?

2 个答案:

答案 0 :(得分:5)

界面。将方法签名更改为

myMethod(ICastableAsMyBaseClass mbc)

然后让ot1和ot3实现ICastableAsMyBaseClass

答案 1 :(得分:2)

你可以在运行时检查mbc的类,但显然这不会阻止你在编译时用错误的时间调用该方法。

如果你想要编译时类型检查,你需要为你想要允许的每种类型重载方法。