[英]How do I access a constructor with user input in C#
在我的程序中,我有特定类Tracer的多个实例(A1,B2,C3等)。 使用名为tracerListBox的列表框,用户将确定他们要使用的跟踪器。
可以说每个跟踪器都有一个名为family的构造函数。
我知道,如果我想访问A1族,只需输入:
A1.family
但是,我想编写完成以下操作的代码:
tracerListBox.Text.family
有没有一种方法可以将用户确定的值传递给构造函数? 我本质上是希望用户确定要使用哪个类示踪剂实例,然后使用该信息提取有关该特定示踪剂的所有信息。
在此先感谢您提供的任何帮助。
您正在寻找的是工厂方法 ,有时也称为虚拟构造函数 (在技术上不正确,因为它既不是构造函数也不是虚拟方法)。
而不是调用构造函数,而是调用静态方法,该方法调用由传入的参数确定的类的构造函数。
interface ITracer {
void Trace(string s);
}
class TracerA : ITracer {
public void Trace(string s) {
// ...
}
}
class TracerB : ITracer {
public void Trace(string s) {
// ...
}
}
class TracerFactory {
public static ITracer Make(string name) {
if (name.Equals("A")) return new TracerA();
if (name.Equals("B")) return new TracerB();
throw new ApplicationException("Unknown: "+name);
}
}
您的问题中缺少许多实际做出决定的细节。 但是,我们可以为您指出可能会回答您问题的一般方向。
object.GetType()
以启动。 您是否正在寻找这样的东西:
string myType = "MyNamespace." + tracerListBox.Text + ", MyAssembly";
var = Type.GetType( myType );
var property = t.GetProperty("family", BindingFlags.Static);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.