作为类的一部分,我有一些不可变的POCO对象只是作为配置文件的数据传输对象。
[DataMember]
public IReadOnlyList<Message> Messages { get; } = new List<Message>()
{
new Warning(75, "UserMessage1", "LogMessage1"),
new Warning(90, "UserMessage2", "LogMessage2"),
new Error(100, "UserMessage3", "LogMessage3")
};
消息
abstract class Message
{
protected Message(LogLevel logLevel, int percentUsed, string userMessage, string logMessage)
{
this.LogLevel = logLevel;
this.PercentUsed = percentUsed;
this.UserMessage = userMessage;
this.LogMessage = logMessage;
}
LogLevel LogLevel { get; }
[DataMember]
int PercentUsed { get; }
[DataMember]
string UserMessage { get; }
[DataMember]
string LogMessage { get; }
}
[DataContract]
internal sealed class Warning : Message
{
public Warning(int percentUsed, string userMessage, string logMessage) : base(LogLevel.Warn, percentUsed, userMessage, logMessage)
{
}
}
[DataContract]
internal sealed class Error : Message
{
public Error(int percentUsed, string userMessage, string logMessage) : base(LogLevel.Error, percentUsed, userMessage, logMessage)
{
}
}
我希望能够将其序列化为以下XML(或将来可能使用JSON?)
<Messages>
<Warning>
<PercentageUsed>75</PercentageUsed>
<UserMessage>UserMessage1</UserMessage>
<LogMessage>LogMessage1</LogMessage>
</Warning>
<Warning>
<PercentageUsed>90</PercentageUsed>
<UserMessage>UserMessage2</UserMessage>
<LogMessage>LogMessage2</LogMessage>
</Warning>
<Error>
<PercentageUsed>100</PercentageUsed>
<UserMessage>UserMessage3</UserMessage>
<LogMessage>LogMessage3</LogMessage>
</Error>
</Messages>
稍后我将使用此配置来生成排序列表,以便我可以获取所使用的磁盘空间量的相应警告和日志级别。例如我使用了77%的磁盘空间,从排序列表中获取相应的错误消息(75%)。
我可以使List使用SortedList并仍然保持我输出的XML输出吗?
我可以让我的班级不变吗?
或者我最好使用List来简化和LINQ以方便使用?