gpt4 book ai didi

c# - 如何为我不拥有的类型和属性实现 TypeConverter?

转载 作者:行者123 更新时间:2023-11-30 12:18:33 28 4
gpt4 key购买 nike

这很烦人:

<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="Black"/>
</GeometryDrawing.Pen>
</GeometryDrawing>

我想要这个:

<GeometryDrawing Pen="Black"/>

所以我写了一个TypeConverter:

public class PenConverter : TypeConverter
{
static readonly BrushConverter brushConverter = new BrushConverter();

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, CultureInfo culture, object value)
{
var s = value as string;
if (a != null)
{
var brush = brushConverter.ConvertFromInvariantString(s) as Brush;
return new Pen(brush, 1);
}
return base.ConvertFrom(context, culture, value);
}
}

现在,如何将它与 Pen 类型联系起来?我不能只向它添加 TypeConverterAttribute,因为我不拥有它(我也不拥有 GeometryDrawing.Pen 属性)。

最佳答案

This link here声称你可以做类似的事情(逐字复制,归功于那个人)

public static void Register<T, TC>() where TC: TypeConverter
{
Attribute[] attr = new Attribute[1];
TypeConverterAttribute vConv = new TypeConverterAttribute(typeof(TC));
attr[0] = vConv;
TypeDescriptor.AddAttributes(typeof(T), attr);
}

该方法的最后一部分似乎可以解决问题。

关于c# - 如何为我不拥有的类型和属性实现 TypeConverter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1999803/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com