如何解决当我评估Func <T>时,Type.GetType返回null
我正在尝试输入Func<SomeTypeFromOtherAssembly>
类型。在Type.GetType
调用之前,我通过调用Assembly.Load
static void Main(string[] args,byte[] byteArray)
{
// fqn is correct name,it equals typeof(Func<SomeTypeFromOtherAssembly>).AssemblyQualifiedName
var fqn = "System.Func`1[[OtherAssembly.SomeTypeFromOtherAssembly,App,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null]],mscorlib,Version=4.0.0.0,PublicKeyToken=b77a5c561934e089"
var t = Assembly.Load(byteArray); // OtherAssembly loads into AppDomain
var t1 = Type.GetType(fqn); // <- null
}
但是如果在调用Type.GetType之前使用OtherAssembly中的任何类,我将获得适当的值(不为null)
static void Main(string[] args,byte[] byteArray)
{
_ = new SomeTypeFromOtherAssembly(); // <- This forced OtherAssembly loading
// fqn is correct name,PublicKeyToken=b77a5c561934e089"
var t = Assembly.Load(byteArray); // OtherAssembly loads into AppDomain
var t1 = Type.GetType(fqn); // <- proper value
}
也许有人知道,如何在不强制加载程序集的情况下获得Func<SomeTypeFromOtherAssembly>
的正确类型值。我确定fqn是正确的(请参见代码段)。我使用.net框架
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。