【发布时间】:2023-03-25 21:30:02
【问题描述】:
在 C#/WPF 应用程序中,我向一些枚举添加了 TypeConverter 属性,以便显示本地化文本而不是枚举文本:
[TypeConverter(typeof(LocalizedEnumTypeConverter))]
public enum MyEnum
{
EnumVal1 = 0,
EnumVal2 = 1,
EnumVal3 = 2,
}
我已经实现了 LocalizedEnumTypeConverter 来执行这个任务。
当我尝试对另一个程序集中定义的枚举使用相同的方法时会出现问题,该枚举无法访问 LocalizedEnumTypeConverter,并且它与其他应用程序共享(也就是说,我无法添加对程序集的引用其中 LocalizedEnumTypeConverter 被定义)。
有没有办法在运行时添加 TypeConverter 属性?这样我就可以在没有 TypeConverter 属性的情况下将枚举留在其他程序集中,然后在我的应用程序的运行时添加它。
【问题讨论】:
-
既然它们在不同的程序集中并且不共享共同的代码库,为什么不在另一个程序集中实现 LocalizedEnumTypeConverter 呢?
-
重点是 LocalizedEnumTypeConverter 是用于本地化的程序集的一部分,如果可以避免的话,我不想将其添加为对访问枚举的其他项目的引用。此外,我的方法避免修改共享枚举,因为该属性只会添加到我当前的程序中。
标签: c# wpf enums attributes typeconverter