我有一个引用域项目的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?
如果你有它所在的程序集,你可以单独按名称获取一个类型.这对你有用吗?
这样,您可以在与您尝试访问的类型不同的位置指定程序集名称.
Assembly assembly = typeof(System.Linq.Enumerable).Assembly;
Type type = assembly.GetType("System.Linq.Enumerable");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2631 次 |
最近记录: |