我想在我的WPF应用程序中创建一个通用数据类型转换器,就像这个类模板一样:
[ValueConversion(typeof(T), typeof(string))]
class DataTypeConverter<T> : IValueConverter
将数据类型(如int,double,byte,ushort)转换为字符串,反之亦然,并将其用于我的classess的不同属性类型的双向绑定,然后通过这一行代码创建任何类型:
class ushortTypeConverter : DataTypeConverter<ushort>{}
并且如果可能的话,在错误输入的情况下绑定的文本框中显示验证消息。
是否可以编写这样的类模板?
答案 0 :(得分:4)
不幸的是,您无法在typeof(T)
中使用通用属性[ValueConversion(typeof(T), typeof(string))]
。有关详细信息,请参阅Why does C# forbid generic attribute types?。换句话说,这是一种编译器简化,以避免被认为是罕见的边缘情况
除此之外,我想不出这种方法不起作用的原因。但是,像System.ComponentModel.TypeConverter这样的类可以在没有泛型的情况下为您完成大部分转换。将它包装在一个简单的转换器中可能更容易。
否则,有很多IValueConverters可能会完成你需要的全部或部分内容。参见: