【发布时间】:2020-09-04 19:16:50
【问题描述】:
我有一个问题需要将 json 转换为 C# 对象。但是这个json可以有不同的属性,在转换时需要检查对象是否有效,就像使用switch case一样。
我在 CQRS 中看到设计模式似乎有一些共同点,有人知道它是如何工作的吗?这样我就可以实现它了。
public List<Event> process(CreateOrderCommand cmd) {
return EventUtil.events(new OrderCreatedEvent(cmd.getCustomerId(), cmd.getOrderTotal()));
}
public List<Event> process(ApproveOrderCommand cmd) {
return EventUtil.events(new OrderApprovedEvent(customerId));
}
public List<Event> process(RejectOrderCommand cmd) {
return EventUtil.events(new OrderRejectedEvent(customerId));
}
如您所见,所有方法名称都相同,但参数不同。我想实现这一点,以便当我得到 json 时,它将根据有效对象进行转换。
我目前做了什么:
public bool TryParseJson<T>(string @this, out T result)
{
bool success = true;
var settings = new JsonSerializerSettings
{
Error = (sender, args) => { success = false; args.ErrorContext.Handled = true; },
MissingMemberHandling = MissingMemberHandling.Error
};
result = JsonConvert.DeserializeObject<T>(@this, settings);
return success;
}
public void Process(JObject query)
{
RandomUser randomUser;
RecurringProcess recurringProcess;
if (TryParseJson(query.ToString(), out randomUser))
{
//do something with the object
}
else if (TryParseJson(query.ToString(), out recurringProcess))
{
//do something with the object
}
}
【问题讨论】:
标签: c# asp.net-web-api cqrs