C# 将枚举映射到json属性
我有一个名为InstrumentConfigValues的类,其属性具有实现接口的类型。现在我有了一个名为InstrumentConfig的枚举,它有一组值。这些值类似于json文件中的键。我想映射类似于[JsonPropertyInstrumentConfig.lowDiskSpace.ToString]的内容 出于某种原因,它不允许这样做,并抱怨说: 属性参数必须是常量表达式 我特别提到了许多帖子。但是如何使用enum键映射每个属性呢。我也看到了这篇文章,但无法与我的问题相关联。请帮忙/C# 将枚举映射到json属性,c#,json.net,C#,Json.net,我有一个名为InstrumentConfigValues的类,其属性具有实现接口的类型。现在我有了一个名为InstrumentConfig的枚举,它有一组值。这些值类似于json文件中的键。我想映射类似于[JsonPropertyInstrumentConfig.lowDiskSpace.ToString]的内容 出于某种原因,它不允许这样做,并抱怨说: 属性参数必须是常量表达式 我特别提到了许多帖子。但是如何使用enum键映射每个属性呢。我也看到了这篇文章,但无法与我的问题相关联。请帮忙/ p
public class InstrumentConfigValues : IInstrumentConfig
{
public double SpaceNeededForSingleRun
{
get; set;
}
public int NumberOfInputSlots
{
get; set;
}
public int SupportedChannelCount
{
get; set;
}
}
//I want this inheritance as some other class wants to access the values.
public abstract class InstrumentConfigReadWrite : InstrumentConfigValues
{
protected ReturnCodes PopulateValuesFromJObject(JObject jObject, string path)
{
try
{
if (JsonConvert.DeserializeObject<InstrumentConfigValues>(jObject.ToString()) == null)
{
return ReturnCodes.ErrorReadingFile;
}
}
catch (JsonSerializationException jex)
{
SystemDebugLogLogger.LogException(jex, "Invalid Instrument Config File Values. Data needs to be copied over.");
return ReturnCodes.ErrorReadingFile;
}
return ReturnCodes.Success;
}
}
只要使用当前编译器,就可以使用 [JsonPropertynameofInstrumentConfig.lowDiskSpace]
如果您尝试使用此选项,并得到一个类似编译错误的错误:名称“nameof”在当前上下文中不存在,这意味着您没有使用当前编译器。关键字nameof是在C 6.0/Visual Studio 2015中引入的,任何比它更新的都可以。只要您使用的是当前的编译器,就可以使用 [JsonPropertynameofInstrumentConfig.lowDiskSpace]
如果您尝试使用此选项,并得到一个类似编译错误的错误:名称“nameof”在当前上下文中不存在,这意味着您没有使用当前编译器。关键字名称是在C 6.0/Visual Studio 2015中引入的,任何更新的都可以。您希望[JsonPropertyInstrumentConfig.LowDiskSpace.ToString]做什么?如果这确实起作用,则属性名称将变为LowDiskSpace disk pace?可能重复的可能重复的只是为了澄清,您希望将InstrumentConfigValue的实例序列化为一个简单字符串,对吗?如果是,请参阅。如果没有,请您用一个显示您的模型和您想要生成的JSON的示例来澄清您的问题。在我的情况下,我希望确保JSON文件中的键映射到枚举中的名称。例如:在我的枚举中,如果我有lowdiskspace,在json中我有lowdiskspace:25,那么这两个键都匹配。否则,如果它类似于lowdisksp:25,那么我想说它是一个无效的json文件,因为键不匹配。您希望[JsonPropertyInstrumentConfig.LowDiskSpace.ToString]做什么?如果这确实起作用,则属性名称将变为LowDiskSpace disk pace?可能重复的可能重复的只是为了澄清,您希望将InstrumentConfigValue的实例序列化为一个简单字符串,对吗?如果是,请参阅。如果没有,请您用一个显示您的模型和您想要生成的JSON的示例来澄清您的问题。在我的情况下,我希望确保JSON文件中的键映射到枚举中的名称。例如:在我的枚举中,如果我有lowdiskspace,在json中我有lowdiskspace:25,那么这两个键都匹配。否则,如果它类似于lowdisksp:25,那么我想说它是一个无效的json文件,因为键不匹配。