在C#中是否可以将方法参数限制为从另一个类继承的类?

时间:2016-07-28 14:46:26

标签: c#

你能创建一个需要参数继承自另一个参数的方法吗?

说我正在写一个外部库类。

abstract class ImTheBaseClass
{
public int Age {get;set;}
}

class Does : ImTheBaseClass
{}

class AlsoDoes : ImTheBaseClass

class DoesNot
{}

我可以编写一个方法来接受Do和AlsoDoes(或任意数量的排列)作为参数但拒绝DoesNot(在编译时,而不是运行时)?

4 个答案:

答案 0 :(得分:5)

不确定;只需将参数声明为Does(或作为基类)。

答案 1 :(得分:5)

是的参数为ImTheBaseClass类型,因此可以传入所有派生类型。

答案 2 :(得分:1)

当然可以。您只需要将基类作为参数

public void MyMethod(ImTheBaseClass myvar)
{
...something
}

然后可以像这样调用它

var x= new Does();
MyMethod(x);

答案 3 :(得分:0)

如果符合您的需要,您可以使用接口而不是基类,那么参数将是该接口。

interface IClass
{
    int Age {get;set;}
}

class Does : IClass
{}

class DoesNot
{}