'Entities' 类型的反序列化构造函数中的每个参数都必须绑定到反序列化的对象 属性 或字段

Each parameter in the deserialization constructor on type 'Entities' must bind to an object property or field on deserialization

我的控制器中有这个 post 方法

[HttpPost]
public Task<AddClientAppSettingResponse> Post(AddClientAppSettingCommand mysetting)
    => Mediator.Send(mysetting);

我的 post 方法接受一个 AddClientAppSettingCommand 模型,如您所见:

public class AddClientAppSettingCommand : IRequest<AddClientAppSettingResponse>
{
        public ClientAppSettings Setting { get; set; }

        public AddClientAppSettingCommand(ClientAppSettings setting)
        {
            Setting = setting;
        }
}

这是我的模型类:

public class ClientAppSettings : BaseEntity
{
        public ClientAppSettings(string userId) : base($"ClientAppSettings/{userId}")
        {
        }

        public bool LightTheme { get; set; }
        public OrderSettings Order { get; set; }
        public NotchSettings Notch { get; set; }
        public int PageSize { get; set; }
        public bool ApplyCommissionInPortfolio { get; set; }
        public bool UseClosingPriceInPortfolioTotalValue { get; set; }
        public bool ShowNotifications { get; set; } = true;
        public bool NoSleep { get; set; } = true;
        public bool NoBalance { get; set; } = false;
        public bool DataTracker { get; set; } = false;
        public bool UserStatusBarToUp { get; set; } = false;
        public bool PortfolioBasedOnLastPositivePeriod { get; set; } = false;
}

public class OrderSettings
{
        public long BuyQuantity { get; set; }
        public long SellQuantity { get; set; }
        public float Tick { get; set; }
        public string TickType { get; set; }
        public bool PriceFromHeadline { get; set; }
        public bool OrderConfirmation { get; set; }
        public bool DivideOrderToMultiple { get; set; }
}

public class NotchSettings
{
        public bool Up { get; set; }
        public bool Down { get; set; }
}

但是当我使用具有这些值的 postman 调用我的 API 时

{
   "setting":{
      "LightTheme":true,
      "Order":{
         "BuyQuantity":"1",
         "SellQuantity":"1",
         "Tick":"1.0",
         "TickType":"asas",
         "PriceFromHeadline":true,
         "OrderConfirmation":true,
         "DivideOrderToMultiple":true
      },
      "Notch":{
         "Up":true,
         "Down":true
      },
      "PageSize":"10",
      "ApplyCommissionInPortfolio":true,
      "UseClosingPriceInPortfolioTotalValue":true,
      "ShowNotifications":true,
      "NoSleep":true,
      "NoBalance":true,
      "DataTracker":true,
      "UserStatusBarToUp":true,
      "PortfolioBasedOnLastPositivePeriod":true
   }
}

我收到这个错误

Each parameter in the deserialization constructor on type 'domain.Entities.ClientAppSettings' must bind to an object property or field on deserialization. Each parameter name must match with a property or field on the object. The match can be case-insensitive

请注意,我将 MediatR 用于 CQRS,我遵循了 但它没有用。我在

上放置了 [JsonConstructor]
 public AddClientAppSettingCommand(ClientAppSettings setting)
        {
            Setting = setting;
        }

但是它没有用。我的变量 setting 是空的

你需要一个用于 api 输入参数的无参数构造函数

public class AddClientAppSettingCommand : IRequest<AddClientAppSettingResponse>
{
        public ClientAppSettings Setting { get; set; }

        public AddClientAppSettingCommand() {}
       

        public AddClientAppSettingCommand(ClientAppSettings setting)
        {
            Setting = setting;
        }
}

设置也一样

public class ClientAppSettings : BaseEntity
{
public ClientAppSettings(){}
      
}