我不得不为WPF中的转换器这样的东西做很多工作,它们共享很多核心功能。
我的一般方法是对基类进行足够的泛化,这样我就可以创建一个具有简化参数的新方法并将其标记为
abstract
然后从基类调用该方法。这意味着任何继承都必须实现新方法。
基本转换器.cs:
public class BaseConverter<TConvert, TConvertBack> : IValueConverter
{
protected CultureInfo CurrentCulture { get; set;}
public virtual object Convert(object value, Type targetType, object parameters, CultureInfo culture)
{
CurrentCulture = culture;
// Generic methods to check types and conversions....
var typedValue = (TConvert)value;
return Convert(typedValue, targetType, parameters);
}
protected abstract Convert(TConvert value, Type targetType, object parameters);
/// Implement rest of interfaces/generic
}
斯特里ngToBooleanConverter.cs公司:
public class StringToBooleanConverter : BaseConverter<string, bool>
{
protected override object Convert(string value, Type targetType, object parameters)
{
bool retVal = false;
// Convert string to boolean and assign to retVal
return retVal;
}
}