引用程序集中的类上的GetType失败

tbo*_*one 3 .net reflection

我有一个引用域项目的asp.net Web项目.

在web项目中,我想使用反射从域项目创建一个类的实例,但我总是得到null(Nothing,在VB中).

注意:我使用的是非完全限定的类名,并且希望在MSDN似乎指示的情况下执行搜索(在程序集层面)

Dim myType为Type = Type.GetType("MetricEntity")'//产生Nothing(Null)

  '// lets try this
  Dim WasFound As Boolean = False
  For Each ObjectType In Me.GetType.Assembly.GetExportedTypes
    If ObjectType.Name = theClassName Then
      WasFound = True
      Exit For
    End If
  Next
Run Code Online (Sandbox Code Playgroud)

这个问题的答案似乎通常是:

Dim myType as Type = Type.GetType("System.Linq.Enumerable, System.Core, " 
     + "Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")); 
Run Code Online (Sandbox Code Playgroud)

但我没有看到必须硬编码版本号的逻辑(或者必须放在配置文件中)....所以如果版本发生变化会发生什么,我忘了在反射代码中更新它.... .是否可以执行GetType,忽略Version,Culture和PublicKeyToken?

Sam*_*ell 5

如果你有它所在的程序集,你可以单独按名称获取一个类型.这对你有用吗?

这样,您可以在与您尝试访问的类型不同的位置指定程序集名称.

Assembly assembly = typeof(System.Linq.Enumerable).Assembly;
Type type = assembly.GetType("System.Linq.Enumerable");
Run Code Online (Sandbox Code Playgroud)