古いコードをリファクタリングしようとしていて、より論理的な継承を作成したいと思っています。
(3)レベルに分けた構造体カスタムクラスがあります。
AccountView>詳細>継承で完全。必要に応じて、それぞれのプロパティを設定します。
セッターを確認した後、プロパティを設定するメソッドを使用して、セッターを1つのクラス「SetAccountProp」に結合したいと思いました。
動作するModelsACCOUNTデータを渡す「CustomerBaseView」があります。
ここで、CustomerDetailViewに対して同じモデルACCOUNTデータを渡しますが、「CustomerBaseView」のプロパティを入力し、関数「CustomerBaseView」を使用してから詳細を入力します。
また、CustomerFullViewの場合、モデルACCOUNTデータを渡し、「CustomerBaseView」、「THEN」、「CustomerBaseView」のプロパティを入力してから、CustomerFullViewの残りのフィールドに入力します。
「CustomerDetailView」関数内で「CustomerBaseView」を呼び出して入力するにはどうすればよいですか?新しいAccountsView();を初期化しますか?各機能で?
を繰り返さずにリファクタリングを終了する方法がわからない:
// -- CustomView <--- replace with func?
view.Email = data.Email;
view.Active = data.Active;
view.FirstName = data.FirstName;
view.LastName = data.LastName;
詳細および全機能で。
コード
namespace BLL.Presenters
{
public class AccountsView
{
public string Email { get; set; }
public bool Active { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Details : AccountsView
{
public bool Administrator { get; set; }
public DateTime? LastLogin { get; set; }
}
public class Full : Details
{
public Guid ID { get; set; }
public DateTime Created { get; set; }
public DateTime Modified { get; set; }
public string FullName { get; set; }
}
public class SetAccountProp
{
public static AccountsView CustomerBaseView(Account data)
{
var view = new AccountsView();
view.Email = data.Email;
view.Active = data.Active;
view.FirstName = data.FirstName;
view.LastName = data.LastName;
return view;
}
public static Details CustomerDetailView(Account data)
{
var view = new Details();
// -- CustomView <--- replace with func?
view.Email = data.Email;
view.Active = data.Active;
view.FirstName = data.FirstName;
view.LastName = data.LastName;
// -- Details
view.Administrator = data.Administrator;
view.LastLogin = data.LastLogin;
return view;
}
public static Full CustomerFullView(Account data)
{
var view = new Full();
// -- CustomView <--- replace with func?
view.Email = data.Email;
view.Active = data.Active;
view.FirstName = data.FirstName;
view.LastName = data.LastName;
// -- Details <--- replace with func?
view.Administrator = data.Administrator;
view.LastLogin = data.LastLogin;
// -- Full
view.ID = data.ID;
view.Created = data.Created;
view.Modified = data.Modified;
view.FullName = data.LastName + ", " + data.FirstName;
return view;
}
}
}