I would like to do something like a partial enum
. If I know C# has no support for this. My idea is to do Dictionary<PartialEnum, MyClass>
in MyClass2
. Dictionary contains some properties loaded from file and I want to have a possibility to add some other "properties" (members of PartialEnum
). I am using the Roslyn so I can compile some "second" part of enum during runtime but don't know how to do it. (partial static class
is also not supported so I cannot use public readonly
members)
MyClass{
string value;
public string Value{
get{ return value;}
}
}
MyClass2{
private Dictionary<PartialEnum,MyClass> properties;
}
I can use string
like key but it is not very nice. So is it possible to do something like:
partial enum PartialEnum{
Name,
Group, ...
}
and runtime compiled part
partial enum PartialEnum{
runTimeLasName,
runTimeTitle, ...
}
It seems to me that you don't actually need an enum
here. You want to add some values to it at runtime, which means enum
doesn't fit your needs. But you can create a class that does. Something like:
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"); } }
}
If you want to use one of the predefined values, access the static property (e.g. PartialEnum.Name
). If you want to use a runtime-defined value, use the GetValue()
method (e.g. PartialEnum.GetValue("runTimeLastName")
).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With