我创建了一个包含公共MyTypes.dll
类类型的共享程序集FooBar
。
我已在多个项目中引用它,它按预期工作。
我已将其完整显示名称确定为:"MyTypes, Version=1.0.0.0, Culture=neutral, PublicKeyToken=624e4a808e6fc010"
。
我创建了一个新项目NewProject
,并添加了MyTypes
作为参考。我想使用FooBar
从NewProject
内确定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
。此外,这种方法适用于当前程序集中的任何内容。
编辑结果公钥令牌丢失了一个数字(复制/粘贴)。
答案 0 :(得分:1)
Type.GetType(string)
方法需要程序集限定类型名称,如下所示:
< Namespace>。< TypeName>,< AssemblyName>,Version = X.X.X.X,Culture = neutral,PublicKeyToken = null
但是,如果您引用了程序集,则应该只能使用typeof(FooBar).GetMembers()
。