2

我想像这个类模板一样在我的 WPF 应用程序中创建一个通用数据类型转换器:

[ValueConversion(typeof(T), typeof(string))]
class DataTypeConverter<T> : IValueConverter

将 int、double、byte、ushort 等数据类型转换为字符串,反之亦然,并以我的类的不同属性类型的两种方式绑定使用它,然后通过这一行代码简单地创建任何类型:

class ushortTypeConverter : DataTypeConverter<ushort>{}

如果可能的话,在输入错误的情况下在绑定的文本框中显示验证消息。

是否可以编写这样的类模板?

4

1 回答 1

5

不幸的是,您不能使用泛型属性(typeof(T)在 中。有关更多信息,[ValueConversion(typeof(T), typeof(string))]请参阅为什么 C# 禁止泛型属性类型?

除此之外,我想不出这种方法行不通的原因。但是,有像System.ComponentModel.TypeConverter这样的类可以在没有泛型的情况下为您完成大部分转换。将其包装在一个简单的转换器中可能会更容易。

否则,有很多 IValueConverters 可以完成您需要的全部或部分工作。看:

于 2013-01-01T12:30:40.740 回答