Прежде всего вам нужно ответить на следующие вопросы: зачем вам действительно нужен динамический тип?Как ты собираешься его использовать?После этого вы можете выбрать подход для реализации.Может быть, вам нужна только строка.
Другой подход заключается в использовании до 2 свойств и, например, enum, которые указывают, какой идентификатор следует выбрать.
Создайте модель данных, которая принимает строку
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
для меня - плохая практика.Я знаю только несколько случаев, когда это приемлемо.Более подробную информацию вы можете найти здесь: Считается ли использование динамики плохой практикой?