我在C#后端使用枚举定义了设置,每个后端都有唯一的编号。
public enum Settings
{
Setting1 = 1,
Setting2 = 2,
//...
}
我使用字典中的WebAPI将设置发送到客户端
public MyModel
{
public Dictionary<Settings, string> MySettings { get; set; }
//...other properties...
}
但问题是我在打字稿中也定义了这个枚举,我想用枚举来引用它。
问题是WebAPI将枚举转换为字符串而不是数字。由于解决方案非常大,我不想从配置中删除StringEnumConverter,只需将转换器定义为此属性的编号,并保留字典的类型,而不是将其更改为Dictionary<int, string>
。
有没有办法,如何使用属性?
答案 0 :(得分:1)
你可以拥有一个私人/受保护的财产,你可以使用这种方式 你要。您也可以制作这些标准的get / set方法并将它们公之于众。
public class MyModel
{
public Dictionary<int, string> MySettings { get; set; }
//One way of handling it.
private Dictionary<Settings, string> MyBetterSettings
{
get { return MySettings.ToDictionary(setting => (Settings) setting.Key, setting => setting.Value); }
set { MySettings = value.ToDictionary(setting => (int) setting.Key, setting => setting.Value); }
}
//Simple C# 6 methods
public Dictionary<Settings, string> GetSettings => MySettings.ToDictionary(setting => (Settings) setting.Key, setting => setting.Value);
public void SetSettings(Dictionary<Settings, string> settings) => MySettings = settings.ToDictionary(setting => (int)setting.Key, setting => setting.Value);
}
这不是最好的,但不必担心改变序列化方式,这是一个很好的权衡。