如何设计模型仅接受整数和GUID



我希望我的模型在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"
}

首先需要在以下问题上回答:为什么您真的需要动态类型?您要如何使用它?之后,您可以选择实施方法。也许您只需要字符串。

另一种方法是用于2个属性,例如为您指示应该选择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类型是不良习惯。我只知道可以接受的情况。您可以在这里找到更多信息:动态的使用是否被认为是不良练习?

相关内容

  • 没有找到相关文章

最新更新