我正在开发一个TypeTranslator
类,其方法为Type TranslateType(Type type)
。
这个方法得到一种类型的接口,如果有一类接口名称没有前导我创建它,否则会引发异常。
这里有一些代码可以清除以前写的内容:
class Program
{
interface IAnimal { }
class Animal : IAnimal { }
void Function()
{
TypeTranslator typeTranslator = new TypeTranslator();
Assert(typeTranslator.TranslateType(typeof(IAnimal) == typeof(Animal)));
}
}
是否有可能得到我想要的东西?
谢谢你的帮助!
答案 0 :(得分:3)
看看Type.GetType
。可以找到文档here。
答案 1 :(得分:2)
您想从字符串变量中获取类型名称吗?如果是,那么您可以使用Type.GetType方法。当然,该方法要求类型名称由其名称空间限定。或者,如果您不希望将类型限制为特定命名空间,则可以使用Assembly.GetTypes方法获取程序集中的所有类型,并查找具有特定名称的类型。
答案 2 :(得分:2)
你听说过dependeny injection吗?也许这正是你所需要的......
有关更多信息,请参阅what is dependency injection和wikipedia。
答案 3 :(得分:0)
您可能需要查看Object.GetType()
,Assembly.GetTypes()
(例如,使用Assembly.GetExecutingAssembly()
),Type.IsClass
,Type.IsInterface
,{{1} }(类似于Type.Name
但没有完整的限定符)和FullName
类来创建实例。
它基本上是获取所有类型,循环遍历它们,检查它们是否是类类型以及它们的名称是否是接口之一。