CSLAでファクトリーパターンを実装したいと思います。抽象化には、抽象基本クラスまたはインターフェイスを使用できます。ストアへの保存、ストアからの取得、レコードの削除などの特定の共通機能があるという理由だけで、抽象クラスを使用することにしました。また、実装されたすべてのオブジェクトに適用されるいくつかのプロパティ。
C# では 1 つのクラスからの継承のみが許可されるため、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;
}
}