TypeDescriptor.GetConverter()不会返回我的转换器

 琴瑟_0203 发布于 2022-12-19 11:04

我有一个简单的类型与自定义类型转换器,在运行时编译和加载.但是TypeDescriptor.GetConverter()找不到合适的转换器.这是一个独立的例子

using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.CodeDom.Compiler;
using Microsoft.CSharp;

public class Program
{
    private static string src =
@"
using System;
using System.ComponentModel;
namespace LoadMe
{
    [TypeConverter(typeof(FooConverter))]
    public class Foo
    {
    }
    public class FooConverter : TypeConverter
    {
        // stuff
    }
}
";
    public static void Main()
    {
        var codeProvider        = new CSharpCodeProvider(new     Dictionary{{ "CompilerVersion", "v4.0" }});
        var compileParameters   = new CompilerParameters(new[] { "System.dll"     }) { GenerateInMemory = true };
        var compilerResults     = codeProvider.CompileAssemblyFromSource(compileParameters, src);

        if (compilerResults.Errors.Count == 0)
        {
            var fooType = compilerResults.CompiledAssembly.GetType("LoadMe.Foo");
            Console.WriteLine(fooType.FullName + "::" + fooType.Assembly.FullName);
            Console.WriteLine("Type converter type = '" + TypeDescriptor.GetConverter(fooType).GetType().FullName + "'");
        }
        else 
        {
            foreach (var err in compilerResults.Errors)
                Console.WriteLine(err);
        }
    }
}

这是示例的输出(在vs中编译)

LoadMe.Foo::q5sszdls, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Type converter type = 'System.ComponentModel.TypeConverter'

我应该挖掘属性并自己创建实例,还是我在这里遗漏了其他东西?

还奇怪!当在LINQPad中作为"C#程序"运行时,它确实有效!这是输出.LINQPad准备好源码

LoadMe.Foo::oqmid5in, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Type converter type = 'LoadMe.FooConverter'

知道LINQPad实际上有什么不同才能让它找到合适的转换器吗?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有