用层次结构继承模型
我使用c#(但不管没有)并具有以下模型:
public abstract class SuspensionRequestCreatedBaseDto
{
public int RequestId { get; set; }
public string DeviceIMEI { get; set; }
public string DeviceName { get; set; }
}
public class SuspensionRequestCreatedExpirationTimeDto : SuspensionRequestCreatedBaseDto
{
public DateTime? LastActive { get; set; }
public DateTime ApprovePlannedDateTime { get; set; }
}
public class SuspensionRequestCreatedReachDataLimitDto : SuspensionRequestCreatedBaseDto
{
public int DataUsedMb { get; set; }
}
我将这些类用于我的服务库,因此,有常见的DTO类,
但是对于一个UI项目,我需要具有以下逻辑:
public abstract class SuspensionRequestCreatedBaseDto
{
public int RequestId { get; set; }
public string DeviceIMEI { get; set; }
public string DeviceName { get; set; }
public virtual string PrepareEmailPart(string body)
{
// logic 1 (base logic)
}
}
public class SuspensionRequestCreatedExpirationTimeDto : SuspensionRequestCreatedBaseDto
{
public DateTime? LastActive { get; set; }
public DateTime ApprovePlannedDateTime { get; set; }
public override string PrepareEmailPart(string body)
{
// logic 2
}
}
public class SuspensionRequestCreatedReachDataLimitDto : SuspensionRequestCreatedBaseDto
{
public int DataUsedMb { get; set; }
public override string PrepareEmailPart(string body)
{
// logic 3
}
}
然后只需调用请求
请求。但是我无法将这些特定的东西(UI事物)添加到我用于服务的核心库中。
我试图这样实施:
public class SuspensionRequestCreatedBaseModel
{
public virtual SuspensionRequestCreatedBaseDto SuspensionRequest { get; set; }
public virtual string PrepareEmailPart(string body)
{
// base logic
}
}
public class SuspensionRequestCreatedExpirationTimeModel : SuspensionRequestCreatedBaseModel
{
public override SuspensionRequestCreatedExpirationTimeDto SuspensionRequest {get; set;}
public override string PrepareEmailPart(string body)
{
// logic 2
}
}
但是我得到了
'suspensionRequestCreatedExpirationTimeModel.SuspensionRequest': 类型必须是“悬挂QuestCreatedBasedto”才能匹配被覆盖的 成员 'suspensionRequestCreatedBaseModel.SuspensionRequest'
如何正确实施它,没有案例>案例
antipattern,而不将不必要的UI事物与核心进行混合?
I use c# (but no matter) and have the following model:
public abstract class SuspensionRequestCreatedBaseDto
{
public int RequestId { get; set; }
public string DeviceIMEI { get; set; }
public string DeviceName { get; set; }
}
public class SuspensionRequestCreatedExpirationTimeDto : SuspensionRequestCreatedBaseDto
{
public DateTime? LastActive { get; set; }
public DateTime ApprovePlannedDateTime { get; set; }
}
public class SuspensionRequestCreatedReachDataLimitDto : SuspensionRequestCreatedBaseDto
{
public int DataUsedMb { get; set; }
}
I use these classes for my Services libraries, so, there are common DTO classes
But for one UI project I need to have the following logic:
public abstract class SuspensionRequestCreatedBaseDto
{
public int RequestId { get; set; }
public string DeviceIMEI { get; set; }
public string DeviceName { get; set; }
public virtual string PrepareEmailPart(string body)
{
// logic 1 (base logic)
}
}
public class SuspensionRequestCreatedExpirationTimeDto : SuspensionRequestCreatedBaseDto
{
public DateTime? LastActive { get; set; }
public DateTime ApprovePlannedDateTime { get; set; }
public override string PrepareEmailPart(string body)
{
// logic 2
}
}
public class SuspensionRequestCreatedReachDataLimitDto : SuspensionRequestCreatedBaseDto
{
public int DataUsedMb { get; set; }
public override string PrepareEmailPart(string body)
{
// logic 3
}
}
then just call request.PrepareEmailPart(...)
without checking type of Dto class. But I can't add such specific things (UI things) to Core library, which I use for Services.
I try to implement it like:
public class SuspensionRequestCreatedBaseModel
{
public virtual SuspensionRequestCreatedBaseDto SuspensionRequest { get; set; }
public virtual string PrepareEmailPart(string body)
{
// base logic
}
}
public class SuspensionRequestCreatedExpirationTimeModel : SuspensionRequestCreatedBaseModel
{
public override SuspensionRequestCreatedExpirationTimeDto SuspensionRequest {get; set;}
public override string PrepareEmailPart(string body)
{
// logic 2
}
}
but I get
'SuspensionRequestCreatedExpirationTimeModel.SuspensionRequest':
type must be 'SuspensionRequestCreatedBaseDto' to match overridden
member
'SuspensionRequestCreatedBaseModel.SuspensionRequest'
How to implement it correctly, without case
antipattern and without mixing unnecessary UI things to Core?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论