选择要实例化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上的维基百科文章. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
