我想在 CSLA 中实现工厂模式。我可以使用抽象基类或抽象接口。我决定使用抽象类,只是因为我具有某些通用功能,例如保存到存储、从存储中检索和删除记录。此外,一些适用于所有已实现对象的属性。
C# 只允许从一个类继承,所以我可以使用 BusinessBase 或抽象类。我还希望具体类型有自己的一套业务规则。CSLA 如何做到这一点?
如果我执行下面列出的操作,抽象类和具体类中的规则都会被触发吗?
一些代码...
抽象类:
public class Form : BusinessBase<Form> {
private static PropertyInfo<string> FormNameProperty = RegisterProperty<string>(c => c.FormName);
public string FormName
{
get { return GetProperty(FormNameProperty); }
}
public abstract void LoadContent();
protected override void AddBusinessRules()
{
// business rules that are commmon for all implementations
}
}
具体实施:
public class FormA : Form {
private static PropertyInfo<string> FirstNameProperty = RegisterProperty<string>(c => c.FirstName);
public string FirstName
{
get { return GetProperty(FirstNameProperty); }
}
public override void LoadContent(){
// some custom code
}
protected override void AddBusinessRules()
{
// business rules that only apply to this class
}
}
工厂:
public static class FormFactory{
public static Form GetForm(string formanmae) {
Type formType = GetFormType(formName);
if(formType == null)
return null;
var form = Activator.CreateInstance(formType) as ReferralForm;
return form;
}
}