依賴性要求迫使我有一個類和它的TypeConverter在不同的 程序集。你可以指定一個TypeConverter而不需要TypeConverterAttribute嗎?
有沒有辦法將TypeConverter分配給類而不使用TypeConverterAttribute,從而導致循環程序集引用。
謝謝。
依賴性要求迫使我有一個類和它的TypeConverter在不同的 程序集。你可以指定一個TypeConverter而不需要TypeConverterAttribute嗎?
有沒有辦法將TypeConverter分配給類而不使用TypeConverterAttribute,從而導致循環程序集引用。
謝謝。
嗯,不知道我以前見過,但你可以使用TypeDescriptor在運行時添加的TypeConverterAttribute,所以給我的示例類:
public class MyType
{
public string Name;
}
public class MyTypeConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
if (sourceType == typeof(string))
return true;
return base.CanConvertFrom(context, sourceType);
}
public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
{
if (value.GetType() == typeof(string))
return new MyType() { Name = (string) value };
return base.ConvertFrom(context, culture, value);
}
}
然後我可以有一個方法:
public void AssignTypeConverter<IType, IConverterType>()
{
TypeDescriptor.AddAttributes(typeof(IType), new TypeConverterAttribute(typeof(IConverterType)));
}
AssignTypeConverter<MyType, MyTypeConverter>();
希望有幫助。
您仍然可以使用TypeConverterAttribute
並使用它的接受完全限定名稱的構造函數。請參閱MSDN。
但是,這對於XAML **不起作用,因爲XAML在運行時不考慮組件修改。我[使用'TypeConverter'找到了解決方法](https://whathecode.wordpress.com/2015/02/14/generic-typeconverter/),它將其實現重定向到使用TypeDescriptor加載的轉換器。 – 2015-02-14 18:01:26