C#-如何返回一个基于字符串的类型,该类型位于不同的程序集中

本文关键字:类型 于不同 集中 程序集 程序 字符串 何返回 返回 C#- 一个 | 更新日期: 2023-09-27 17:59:33

这扩展了我之前在这个问题中所问的内容。我可以使用Type。GetType(mystring)返回基于我传递的字符串的类型。问题是我要确定的类型在不同的程序集中。

如何返回基于字符串的类型,因为该类型位于不同的程序集中。

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

C#-如何返回一个基于字符串的类型,该类型位于不同的程序集中

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

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);

Type.GetType(...)可以做到这一点,您只需要传入命名空间限定的类型名称:http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx

您需要知道类型驻留在哪个程序集中,以便访问该程序集。

一旦你有了它,你就可以使用系统了。反射组件以获得您想要的。

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

类似的东西

Type t = Assembly.Load("myassembly").GetType("myType");

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

这将在系统中获得类型ViewPage。网状物Mvc组件:

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