很好,有幾個假設我正在做在這裏,所以讓我做他們明確...
給出:
- 這主要是查詢/顯示邏輯的差異
- 顯示邏輯已經可以處理
- 底層對象被表示的空值是兩個項目之間的相同
- 有確定這是否是一個「manua的一個簡單的方法l'或'自動'呼叫
我會說繼承不是我會模擬它的方式。爲什麼?因爲它是同一個對象,而不是兩種不同的對象。你基本上只是不顯示幾個字段,因此不需要查詢它們。因此,我可能會嘗試完成一些事情,以明確兩者之間差異的本質(請記住,我打算用這種方式來展示組織它的方式,以便清楚地說明,任何特定的實現可能會有所不同需要;主要想法是蒐集處理差異它們是什麼:在基於某種條件得到什麼質疑差異
public enum EQueryMode
{
Manual,
Automatic
}
public class FieldSpecification
{
public string FieldName { get; set; }
public bool[] QueryInMode { get; set; }
public FieldSpecification
(
string parFieldName,
bool parQueryInManual,
bool parQueryInAutomatic
)
{
FieldName = parFieldName;
QueryInMode = new bool[] { parQueryInManual, parQueryInAutomatic };
}
}
public class SomeKindOfRecord
{
public List<FieldSpecification> FieldInfo =
new List<FieldSpecification>()
{
new FieldSpecification("Field1", true, true),
new FieldSpecification("Field2", true, false),
new FieldSpecification("Field3", true, true),
new FieldSpecification("Field4", true, false)
};
// ...
public void PerformQuery(EQueryMode QueryMode)
{
List<string> FieldsToSelect =
(
from f
in FieldInfo
where
f.QueryInMode[(int)QueryMode]
select
f.FieldName
)
.ToList();
Fetch(FieldsToSelect);
}
private void Fetch(List<string> Fields)
{
// SQL (or whatever) here
}
}
編輯:哇我似乎無法使今天后不必。糾正我的語法!)