我想做类似的事情partial enum。如果我知道 C# 不支持这个。我的想法是Dictionary<PartialEnum, MyClass>在MyClass2. 字典包含一些从文件加载的属性,我希望有可能添加一些其他“属性”( 的成员PartialEnum)。我正在使用 Roslyn,所以我可以在运行时编译enum 的一些“第二”部分,但不知道如何去做。(partial static class也不支持所以我不能使用public readonly成员)
MyClass{
string value;
public string Value{
get{ return value;}
}
}
MyClass2{
private Dictionary<PartialEnum,MyClass> properties;
}
Run Code Online (Sandbox Code Playgroud)
我可以使用stringlike 键,但它不是很好。那么是否可以执行以下操作:
partial enum PartialEnum{
Name,
Group, ...
}
Run Code Online (Sandbox Code Playgroud)
和运行时编译部分
partial enum PartialEnum{
runTimeLasName,
runTimeTitle, ...
}
Run Code Online (Sandbox Code Playgroud)
在我看来,你实际上并不需要enum这里。您想在运行时向其添加一些值,这意味着enum不符合您的需求。但你可以创建一个类来实现这一点。就像是:
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"); } }
}
Run Code Online (Sandbox Code Playgroud)
如果您想使用预定义值之一,请访问静态属性(例如PartialEnum.Name)。如果您想使用运行时定义的值,请使用GetValue()方法(例如PartialEnum.GetValue("runTimeLastName"))。
| 归档时间: |
|
| 查看次数: |
10358 次 |
| 最近记录: |