San*_*ord 1 c# polymorphism types interface 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 {}
Run Code Online (Sandbox Code Playgroud)
我想将这些分为几类,其中一些重叠,所以我可以在使用时要求这种组合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 {}
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但实际上使用这种疯狂是我遇到麻烦的地方. 我无法弄清楚如何指定函数的参数应该是类型TopClass和实现接口IGroupA.IE,我希望能够定位类ClassA,ClassB并且ClassC没有明确地命名它们(以便负责的开发人员TopClass和它的死者可以轻松地重新定义组而不干扰其他开发人员).
您可以使用泛型约束,并且可以指定类型应从中派生的类和该类型应实现的接口:
void MyFunction<T>(T argument) where T : TopClass, IGroupA
{
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |