我编写了一个自定义属性来支持使用枚举描述符进行本地化。这是我的代码
public class LocalizedDescriptionAttribute : DescriptionAttribute
{
ResourceManager _resourceManager;
string _resourceKey;
public LocalizedDescriptionAttribute(string resourceKey, Type resourceType)
{
_resourceManager = new ResourceManager(resourceType);
_resourceKey = resourceKey;
}
public override string Description
{
get
{
string description = _resourceManager.GetString(_resourceKey);
return string.IsNullOrWhiteSpace(description) ? string.Format("[[{0}]]", _resourceKey) : description;
}
}
}
我支持像这样的本地化
public enum Shape
{
[LocalizedDescription("STR_SQUARE", typeof(MyResources))]
SQUARE
}
但是如果从资源文件中删除资源字符串,则不会出现编译时错误。我想以这样的方式编写属性:如果从资源文件中删除资源字符串,我的代码应该给出编译错误。
我不知道为什么我无法做到这一点,如何通过自定义属性实现下面提到的。
public enum Shape
{
[LocalizedDescription(MyResources.STR_SQUARE, typeof(MyResources))]
SQUARE
}