清楚地解释here 如何实现"多重继承"在C#中使用接口。但是,我想知道,如何在实体框架代码第一工作流程中实现相同的目标。
提供明确的代码:
public abstract class DomainObject {
// Every business model must have this fields
public Guid Id {get;set;}
public string SystemCode {get;set;}
}
这里还有一些可选的抽象类,如:
public abstract class MultiTitleObject : DomainObject {
public string TitleRu { get; set; }
public string TitleEn { get; set; }
}
public abstract class ManageableByAdminObject : DomainObject {
public bool isVisibleOnSite {get;set;}
public bool isDeletedByAdmin {get;set;}
}
让我们说我的课程需要包含 MultiTitleObject和ManageableByAdminObject 以及 DomainObject 的字段。 由于C#不支持多重继承,我可以执行以下操作:
public class ManageableByAdminDomainObject : ManageableByAdminObject {
}
public class ManageableByAdminMultiTitleDomainObject : ManageableByAdminDomainObject {
// Even here it's too complicated...
// What if I need to inherit from 3 or more classes?
}
所以我想要使用的解决方案就像接口一样:
public interface IFieldImitation {
bool isVisibleOnSite ();
}
public class ManageableByAdminObject : IFieldImitation, DomainObject {
public bool isVisibleOnSite () => return true;
}
但是,EF确实理解抽象类而不理解接口。 我该如何解决这个问题?