在运行时为枚举类型添加TypeConverter属性

7
在一个C#/WPF应用程序中,我为一些枚举类型添加了TypeConverter属性,以便显示本地化文本而不是枚举的文本:
[TypeConverter(typeof(LocalizedEnumTypeConverter))]
public enum MyEnum
{
    EnumVal1 = 0,
    EnumVal2 = 1,
    EnumVal3 = 2,
}

我已经实现了LocalizedEnumTypeConverter来执行这个任务。

当我尝试使用相同的方法处理在另一个程序集中定义的枚举类型时,问题就出现了。这个程序集无法访问LocalizedEnumTypeConverter,并且与其他应用程序共享(也就是说,我不能向定义了LocalizedEnumTypeConverter的程序集添加引用)。

是否有办法在运行时添加TypeConverter属性?这样,我就可以将枚举类型保留在其他程序集中,不带TypeConverter属性,然后在我的应用程序中在运行时添加它。


既然它们位于不同的程序集中且没有共享的代码库,为什么不在另一个程序集中也实现LocalizedEnumTypeConverter呢? - Carbine
1
重点是,LocalizedEnumTypeConverter是一个旨在本地化的程序集的一部分,我不想将其作为参考添加到访问枚举的其他项目中。此外,我的方法避免了修改共享枚举,因为该属性仅会在我的当前程序中添加。 - jcibar
1个回答

10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接