我想做一些像部分枚举的事情.如果我知道C#不支持这个.我的想法是做Dictionary< PartialEnum,MyClass>在MyClass2中.字典包含从文件加载的一些属性,我希望有可能添加一些其他“属性”(PartialEnum的成员).我正在使用Roslyn,所以我可以在运行时编译枚举的“第二”部分,但不知道如何做. (部分静态类也不受支持,所以我不能使用公共只读成员)
MyClass{
string value;
public string Value{
get{ return value;}
}
}
MyClass2{
private Dictionary<PartialEnum,MyClass> properties;
}
我可以使用像键一样的字符串,但它不是很好.那么有可能做类似的事情:
partial enum PartialEnum{
Name,
Group, ...
}
和运行时编译的部分
partial enum PartialEnum{
runTimeLasName,
runTimeTitle, ...
}
最佳答案 在我看来,你实际上并不需要这里的枚举.您希望在运行时向其添加一些值,这意味着枚举不适合您的需要.但是你可以创建一个类.就像是:
class PartialEnum
{
private static readonly Dictionary<string, PartialEnum> Values =
new Dictionary<string, PartialEnum>();
public string Id { get; private set; }
private PartialEnum(string id)
{
Id = id;
}
public static PartialEnum GetValue(string id)
{
PartialEnum value;
if (!Values.TryGetValue(id, out value))
{
value = new PartialEnum(id);
}
return value;
}
public static PartialEnum Name { get { return GetValue("Name"); } }
public static PartialEnum Group { get { return GetValue("Group"); } }
}
如果要使用其中一个预定义值,请访问静态属性(例如PartialEnum.Name).如果要使用运行时定义的值,请使用GetValue()方法(例如PartialEnum.GetValue(“runTimeLastName”)).