如何在外部共享程序集中获取类型的System.Type?

时间:2013-11-21 21:38:46

标签: c# reflection

我创建了一个包含公共MyTypes.dll类类型的共享程序集FooBar。 我已在多个项目中引用它,它按预期工作。

我已将其完整显示名称确定为:"MyTypes, Version=1.0.0.0, Culture=neutral, PublicKeyToken=624e4a808e6fc010"

我创建了一个新项目NewProject,并添加了MyTypes作为参考。我想使用FooBarNewProject内确定System.Type.GetType()的成员。

这是我写的:

// NewProject.cs
using System;
using System.Reflection;

// namespace... class... method...
Type fb;
fb = Type.GetType("MyTypes.FooBar, MyTypes"); // or the full display name
// Exception will be thrown because fb is set to null
MemberInfo[] fbMembers = fb.GetMembers();

但是,如代码注释中所述,我无法向GetType提供正确的字符串格式,以便为外部程序集返回有效的Type。此外,这种方法适用于当前程序集中的任何内容。

编辑结果公钥令牌丢失了一个数字(复制/粘贴)。

1 个答案:

答案 0 :(得分:1)

Type.GetType(string)方法需要程序集限定类型名称,如下所示:

< Namespace>。< TypeName>,< AssemblyName>,Version = X.X.X.X,Culture = neutral,PublicKeyToken = null

但是,如果您引用了程序集,则应该只能使用typeof(FooBar).GetMembers()