C# - 如何根据类型驻留在不同程序集中的字符串返回Type

时间:2011-06-16 18:35:50

标签: c# .net reflection .net-4.0

这扩展了我之前在this问题中提出的问题。我可以使用Type.GetType(mystring)根据我传递的字符串返回一个类型。问题是我想要确定的类型是在不同的程序集中。

如何根据字符串返回类型,其中类型位于不同的程序集中。

编辑:我有一个接受字符串的方法,字符串是我想要返回的类型。如果可能的话,我不想将程序集硬编码到方法中......

5 个答案:

答案 0 :(得分:2)

您可以指定程序集,假设它已加载到应用程序域中:

var stringType = Type.GetType("System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", true);

如果不是,您可能需要先加载程序集:

var myType = Assembly.LoadFrom(@"c:\work\MyAssembly.dll").GetType("Foo.Bar", true);

答案 1 :(得分:1)

Type.GetType(...)可以执行此操作,您只需传入名称空间限定的类型名称:http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx

答案 2 :(得分:0)

您需要知道该类型所在的程序集,以便您可以访问该程序集。

完成后,您可以使用System.Reflection组件来获得所需的内容。

答案 3 :(得分:0)

http://msdn.microsoft.com/en-us/library/y0cd10tb.aspx

这样的东西
Type t = Assembly.Load("myassembly").GetType("myType");

答案 4 :(得分:0)

使用完全限定的程序集名称:

这将在System.Web.Mvc程序集中获取类型ViewPage

Type.GetType(System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35)