我有一个名为IStep的接口,可以进行一些计算(参见“Execution in the Kingdom of Nouns”)。在运行时,我想按类名选择适当的实现。
//使用如下:
istep step=getstep(sname);

最佳答案

你的问题很混乱…
如果要查找实现istep的类型,请执行以下操作:

foreach (Type t in Assembly.GetCallingAssembly().GetTypes())
{
  if (!typeof(IStep).IsAssignableFrom(t)) continue;
  Console.WriteLine(t.FullName + " implements " + typeof(IStep).FullName);
}

如果您已经知道所需类型的名称,请执行以下操作
IStep step = (IStep)Activator.CreateInstance(Type.GetType("MyNamespace.MyType"));

07-27 20:07