我有一个像这样的通用方法:
public class DomainServiceBase<TEntity> : IDomainServiceBase<TEntity> where TEntity : class
{
public virtual async Task<bool> InsertAndSaveAsync<TRequest>(TRequest request)
{
// Implementations
}
}
我在另一个类中重写它,如下所示:
public class AnnouncementDomainService : DomainServiceBase<AnnouncementDataModel>, IAnnouncementDomainService
{
public override async Task<bool> InsertAndSaveAsync<AnnouncementAddRequest>(AnnouncementAddRequest request)
{
// an example of my issue
var title = request.Title // here i get CS1061 error
// Implementations
}
}
我无权访问AnnouncementAddRequest 属性。
这是AnnouncementAddRequest模型:
public class AnnouncementAddRequest
{
public string Title { get; set; }
public string Code { get; set; }
public string? Description { get; set; }
public bool IsActive { get; set; }
public AnnouncementAddRequest()
{
Title = string.Empty;
Code = string.Empty;
}
}
如您所见,所有属性都是公共的 我附上 Visual Studio IntelliSense 的屏幕截图
我试图重写派生类中的虚拟泛型方法,以便我可以进行验证,最后执行
await base.InsertAndSaveAsync(request)
看来请求类型也应该是类型参数:
public class DomainServiceBase<TEntity, TRequest>
{
public virtual async Task<bool> InsertAndSaveAsync(TRequest request)
{
// Implementations
}
}
public class AnnouncementDomainService
: DomainServiceBase<AnnouncementDataModel, AnnouncementAddRequest>
, IAnnouncementDomainService
{
public override async Task<bool> InsertAndSaveAsync(AnnouncementAddRequest request)
{
// Implementations
}
}