当我评估Func <T>时,Type.GetType返回null

问题描述

我正在尝试输入Func<SomeTypeFromOtherAssembly>类型。在Type.GetType调用之前,我通过调用Assembly.Load

来加载程序集(OtherAssembly)
        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 (将#修改为@)