我希望我的模型在id中接受所有3种不同类型的值(基本上只有Guid和int)
这是我的模特-
public class Base
{
public dynamic Id { get; set; }
public string Type { get; set; }
}
这是我的json-
{
"id": "31367556-cda7-4fce-9d8a-2cd6f46544f9",
"type": "form"
},
{
"id": "123",
"type": "form"
},
{
"id": 456,
"type": "form"
}
答案 0 :(得分:0)
首先,您需要回答以下问题:为什么真正需要动态类型?您将如何使用它?之后,您可以选择实施方法。也许您只需要字符串即可。
另一种方法是使用2个属性,例如enum,它为您指示应选择哪个ID。
让您的数据模型接受字符串
public class Base
{
public string Id { get; set; }
public string Type { get; set; }
}
在收到并解析它之后,您需要将此Data Transfer Model
映射到Model
并将其仅在Model
类型的应用程序中使用。
可以是
//your ApplicationModel
public class BaseModel
{
public Guid GuidId{get;set;}
public int Id{get;set;}
public IdType{get;set;}
public enum IdType
{
Guid,
Int
}
}
public BaseModel Map(Base dto)
{
var model=new BaseModel{Type= dto.Type};
var guidResult = Guid.TryParse(dto.Id,out model.GuidId);
if(!guidResult) int.TryParse(dto.Id, out model.Id);
model.IdType = guidResult?IdType.Guid:IdType.Int;
return model
}
对我来说,使用dynamic
类型是错误的做法。我只知道少数情况可以接受。
您可以在这里找到更多信息:Is the use of dynamic considered a bad practice?