选择要实例化c#的类
发布时间:2020-12-15 19:58:22 所属栏目:百科 来源:网络整理
导读:我想要做的是选择适当的类来实例化基于传入的括号. 目前,我有两个类(ClassA和ClassB),并根据括号使用2种方法调用这些im.什么 我想实现的是只使用一种方法基于传递的字符串括号实例化ClassA或ClassB. 我真的不知道如何传回类对象使用.. 我的方法是在方法A中调
我想要做的是选择适当的类来实例化基于传入的括号.
目前,我有两个类(ClassA和ClassB),并根据括号使用2种方法调用这些im.什么 我想实现的是只使用一种方法基于传递的字符串括号实例化ClassA或ClassB. 我真的不知道如何传回类对象使用.. 我的方法是在方法A中调用类来实例化然后我可以使用它. ClassA myclass = new ClassA(); 我确实考虑使用以下但我不(如果我诚实)知道如何实例化对象o或在MyMethod传回它时使用它. public class ClassA { public ClassA() { //Do something for Class A } public string msgA() { return "Here is msg A"; } } public class ClassB { public ClassB() { //Do something for Class B } public string msgB() { return "Here is msg B"; } } private string MyMethod() { object o = GetClassToInstantiate("ClassA"); //Use object o } private object GetClassToInstantiate(string parameter) { object temp = null; switch (parameter) { case "ClassA": temp = new ClassA(); break; } return temp; } 任何建议如何我可以解决这个可能非常容易的情况. 解决方法
你需要的是基类中的工厂方法:
enum ClassType { ClassA,ClassB } class ClassBase { public static ClassBase Create(ClassType classType) { switch (classType) { case ClassType.ClassA: return new ClassA(); case ClassType.ClassB: return new ClassB(); default: throw new ArgumentOutOfRangeException(); } } } class ClassA : ClassBase { } class ClassB : ClassBase { } 有关详细信息,请查看Factory method pattern上的维基百科文章. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |