[英]How to divide logic of returned object's creating between base and derived class in C#?
如何在沒有冗余方法,復制對象,通過引用傳遞和其他骯臟技巧的情況下,在基類和派生類之間划分對象的創建邏輯? 這是一個例子。 我需要寫更多細節。 我需要寫更多細節。 更多細節。
public abstract class Base
{
protected int Property1;
protected int Property2;
public View GetView()
{
View view = new View();
view.Property1 = Property1.ToString();
view.Property2 = Property2.ToString();
return view;
}
}
public class Derived1 : Base
{
int Property3;
public override View GetView()
{
View1 view = new View1();
view.Property3 = Property3.ToString();
//return view;
//return base.GetView();
//return view UNION base.GetView(); ???
}
}
public class Derived2 : Base
{
int Property4;
public override View GetView()
{
View2 view = new View2();
view.Property4 = Property4.ToString();
//return ???
}
}
public abstract class View
{
public string Property1;
public string Property2;
}
public class View1 : View
{
public string Property3;
}
public class View2 : View
{
public string Property4;
}
謝謝。
這是一種可能性。 視圖將傳遞給基本設置方法以設置基本特定字段。
public abstract class Base
{
protected int Property1;
protected int Property2;
protected void Setup(View view)
{
view.Property1 = Property1.ToString();
view.Property2 = Property2.ToString();
}
}
public class Derived1 : Base
{
int Property3;
public View GetView()
{
View1 view = new View1();
view.Property3 = Property3.ToString();
Setup(view);
return view;
}
}
public class Derived2 : Base
{
int Property4;
public View GetView()
{
View2 view = new View2();
view.Property4 = Property4.ToString();
Setup(view);
return view;
}
}
我想泛型可以幫助您完全實現您所希望的-強類型結果和重用基類邏輯的能力。 也許我錯過了你的意思
public abstract class Base<T>
where T : View
{
protected int Property1;
protected int Property2;
public abstract T GetView();
}
public class Derived1 : Base<View1>
{
int Property3;
public override View1 GetView()
{
View1 view = new View1();
view.Property3 = Property3.ToString();
return view;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.