指定函数参数的类型*和*接口

时间:2014-07-01 22:35:01

标签: c# types interface polymorphism multiple-inheritance

我有一个类的结构,我想将一些奇怪的约束应用于:

public abstract class TopClass {}

public class ClassA : Topclass {}
public class ClassB : Topclass {}
public class ClassC : Topclass {}
public class ClassD : Topclass {}
public class ClassE : Topclass {}

我想将这些分组,其中一些重叠,所以我可以在使用TopClass时要求这种组合。由于C#不支持多重继承,我一直在尝试使用接口:

public abstract class TopClass {}

public interface IGroupA {}
public interface IGroupB {}

public class ClassA : Topclass, IGroupA          {}
public class ClassB : Topclass, IGroupA          {}
public class ClassC : Topclass, IGroupA, IGroupB {}
public class ClassD : Topclass, IGroupB          {}
public class ClassE : Topclass, IGroupB          {}

这一切都很好,但实际上使用这种疯狂是我遇到麻烦的地方。 我无法弄清楚如何指定函数的参数应该是TopClass类型并实现接口IGroupA 。 IE,我希望能够在没有明确命名的情况下定位类ClassAClassBClassC(以便负责TopClass及其死者的开发人员可以轻松重新定义组,而不会干扰其他开发人员。)

1 个答案:

答案 0 :(得分:5)

您可以使用generic constraints,并且可以指定类型应该派生自的和该类型应实现的接口

void MyFunction<T>(T argument) where T : TopClass, IGroupA
{

}
相关问题