如何在具有特定名称的当前程序集中查找C#接口的实现?

Dar*_*mas 6 c# linq reflection linq-to-objects

我有一个叫做IStep可以做一些计算的接口(参见" 名词王国中的执行 ").在运行时,我想按类名选择适当的实现.

// use like this:
IStep step = GetStep(sName);

lub*_*sko 8

你的问题很混乱......

如果要查找实现IStep的类型,请执行以下操作:

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

如果您已经知道所需类型的名称,请执行此操作

IStep step = (IStep)Activator.CreateInstance(Type.GetType("MyNamespace.MyType"));
Run Code Online (Sandbox Code Playgroud)