我有以下界面:
public interface IEmailModel
{
EmailAddressDto? Receiver { get; set; }
}
现在我想实施它以备记录。试试这个:
public record EmailModelSendConfirmationToUserAndSuperadmin(EmailAddressDto? Receiver = null) : IEmailModel;
没问题,没有错误
试试这个:
public record EmailModelSendConfirmationEmailCodeToUser(string link, EmailAddressDto? Receiver = null) : IEmailModel;
我明白了
“EmailModelSendConfirmationEmailCodeToUser”未实现 接口成员“IEmailModel.Receiver.set”。 “EmailModelSendConfirmationEmailCodeToUser.Receiver.init”不能 实施“IEmailModel.Receiver.set”。
我真的不明白为什么要实现
set
如果参数可以为空,但是没关系
我将界面更改为:
public interface IEmailModel
{
EmailAddressDto? Receiver { get; init; }
}
类
EmailModelSendConfirmationEmailCodeToUser
没有错误,但类EmailModelSendConfirmationToUserAndSuperadmin
有:
“EmailModelSendConfirmationToUserAndSuperadmin”未实现 接口成员“IEmailModel.Receiver.init”。 “EmailModelSendConfirmationToUserAndSuperadmin.Receiver.set”不能 实现“IEmailModel.Receiver.init”。
为什么要这样以及如何实现这个记录接口?
删除
set
或将其更改为 init
:
public interface IEmailModel
{
EmailAddressDto? Receiver { get; init; }
}
或者使用“简单”属性:
public record EmailModelSendConfirmationToUserAndSuperadmin() : IEmailModel
{
public EmailAddressDto? Receiver { get; set; }
}