gpt4 book ai didi

.net - 引用程序集中类的 GetType 失败

转载 作者:行者123 更新时间:2023-12-01 10:14:45 28 4
gpt4 key购买 nike

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

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

注意:我使用的是非完全限定的类名,并希望搜索将按照 MSDN 似乎指示的那样执行(在程序集级别)

Dim myType as Type = Type.GetType("MetricEntity")'//没有结果(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

这个问题的答案通常是:

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

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

最佳答案

如果您拥有类型所在的程序集,则可以仅通过名称获取类型。这对您有用吗?

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

Assembly assembly = typeof(System.Linq.Enumerable).Assembly;
Type type = assembly.GetType("System.Linq.Enumerable");

关于.net - 引用程序集中类的 GetType 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2233516/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com