C# EnumConverter构造函数如何获取类型参数
如果我创建一个用于自定义枚举显示的类,如下所示:C# EnumConverter构造函数如何获取类型参数,c#,constructor,parameter-passing,typeconverter,C#,Constructor,Parameter Passing,Typeconverter,如果我创建一个用于自定义枚举显示的类,如下所示: public class MyEnumConverter : EnumConverter { public MyEnumConverter(Type type) : base(type) { } public override object ConvertTo(...) public override object ConvertFrom(...) } 当我用MyEnumConverter作为TypeCo
public class MyEnumConverter : EnumConverter
{
public MyEnumConverter(Type type) : base(type)
{
}
public override object ConvertTo(...)
public override object ConvertFrom(...)
}
当我用MyEnumConverter
作为TypeConverter
标记枚举时:
[TypeConverter(typeof(MyEnumConverter))]
public enum MyEnum
{
SomeValue,
OtherValue
}
它按预期工作。
EnumConverter
构造函数如何接收表示枚举类型的数据?TypeConverter
是否知道如何专门处理EnumConverter
并为我填写此文档?这是背景中发生的事情的语法糖吗?这种行为是否可以自定义,以便如果我想为自定义的TypeConverter
实现一个参数化构造函数,我可以通知TypeConverter
如何处理自定义构造函数?从内部看,TypeConverter
使用复杂的嵌套if
语句处理所需转换器的采购。类似()的内容:
从第一个if
语句可以看出,它知道将特殊的Type
参数传递到构造函数中
作为对第二个问题的回答,我是否可以使用自定义参数化构造函数创建自定义的
类型转换器
,该构造函数可以很好地与类型转换器
配合使用,这看起来很可疑。这是要在某个设计器中显示的吗?负责这一点的代码可能在框架中,ILSpy可以向您展示它的功能。它很可能将值作为数组传递到反射的构造函数调用中。
internal static TypeConverter GetCoreConverterFromCustomType(Type type)
{
TypeConverter typeConverter = null;
if (type.IsEnum)
{
// Need to handle Enums types specially as they require a ctor that
// takes the underlying type.
typeConverter = new System.ComponentModel.EnumConverter(type);
}
else if (typeof(Int32).IsAssignableFrom(type))
{
typeConverter = new System.ComponentModel.Int32Converter();
}
else if (typeof(Int16).IsAssignableFrom(type))
{
typeConverter = new System.ComponentModel.Int16Converter();
}
//...