C# 使用从不同程序集中的类继承的模型的代码优先方法
我有一个分为两个项目的解决方案:一个包含所有模型类的类库(我们称之为业务),一个ASP.NETMVC项目 我的业务类是通用的,适用于多种类型的项目。因此,它们不包含与其他类的任何数据注释/关联,只包含成员变量/属性/构造函数 使用代码优先的方法,我应该如何设计我的ASP.Net模型以与我的业务模型协同工作 我最初的教学是将我的业务类设置为部分类,然后通过添加必要的数据注释/关联来覆盖我的属性。我不能这样做,因为我们正在处理两个不同的项目 我还认为我可以使用继承。我的ASP.Net模型可以从业务类继承,我可以在上面添加我的数据注释/关联。这看起来有点混乱和不合逻辑,因为我需要在这个新的子类中定义我的所有构造函数 有没有一种聪明的方法可以干净利落地做到这一点 编辑: 我的业务类通过在属性设置器中抛出异常来进行验证。我的第一个设计是创建我自己的自定义数据注释,它将捕获我的setter抛出的异常:C# 使用从不同程序集中的类继承的模型的代码优先方法,c#,asp.net,asp.net-mvc,ef-code-first,C#,Asp.net,Asp.net Mvc,Ef Code First,我有一个分为两个项目的解决方案:一个包含所有模型类的类库(我们称之为业务),一个ASP.NETMVC项目 我的业务类是通用的,适用于多种类型的项目。因此,它们不包含与其他类的任何数据注释/关联,只包含成员变量/属性/构造函数 使用代码优先的方法,我应该如何设计我的ASP.Net模型以与我的业务模型协同工作 我最初的教学是将我的业务类设置为部分类,然后通过添加必要的数据注释/关联来覆盖我的属性。我不能这样做,因为我们正在处理两个不同的项目 我还认为我可以使用继承。我的ASP.Net模型可以从业务类
public class SetterBasedValidation : ValidationAttribute
{
string m_errorMessage = null;
public SetterBasedValidation(string errorMessage)
{
m_errorMessage = errorMessage;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
try
{
Type type = validationContext.ObjectType;
PropertyInfo property = type.GetProperty(validationContext.MemberName);
property.SetValue(validationContext.ObjectInstance, value);
}
catch (Exception)
{
return new ValidationResult(m_errorMessage);
}
return ValidationResult.Success;
}
}
然后,我需要一种在ASP.Net模型类中使用自定义数据注释的方法。这将给我我想要的结果:
- 保持我的商业课程通用性
- 使用来自我的setters的验证
- 使用数据注释
以这种方式分离应用程序将使您的生活更加轻松。在大多数业务领域中,您可以通过数据注释和关联指定的内容将应用于为该业务编写的任何应用程序。我有点惊讶,你看到了重用的潜力,不知道你是否想得太多了。UI项目中的模型对象通常应该与业务对象不同。@EricJ。在这种情况下,您将如何处理此问题?在我的业务类中直接使用数据注释,而完全绕过ASP.Net模型?