我有一個類,CMyDataClass
,存儲數據,其中有三個成員變量和兩個構造像抽象工廠模式
public class CMyDataClass
{
public String strIndex, strName;
public int nType;
public CMyDataClass()
{
strIndex = "";
strName = "";
nType = 0;
}
public CMyDataClass(String ind, String name, int ty)
{
strIndex = ind;
strName = name;
nType = ty;
}
}
而在另一個類(CMain
)我有一個List<CMyDataClass>
其中包含兩個對象,如
List<CMyDataClass> lstMyDataList = new List<CMyDataClass> { new CMyDataClass("", "", 1),
new CMyDataClass("", "", 2) };
我有繼承CMyDataClass
每個包含一個函數來填充數據結構中的兩個子類。
子類中的函數將根據ntype
填充對象。
這裏是我的子類
//Class One
class COne : CMyDataClass
{
public static bool FillData(CMyDataClass objCMDClass)
{
if (objCMDClass.nType == 1)
{
objCMDClass.strIndex = "Index-One";
objCMDClass.strName = "One";
return true;
}
return false;
}
}
//Class Two
class CTwo : CMyDataClass
{
public static bool FillData(CMyDataClass objCMDClass)
{
if (objCMDClass.nType == 2)
{
objCMDClass.strIndex = "Index-Two";
objCMDClass.strName = "Two";
return true;
}
return false;
}
}
在CMain
I類執行類似
public void Func()
{
for (int index = 0; index < lstMyDataList.Count; index++)
{
if (COne.FillData(lstMyDataList[index]) == false)
if (CTwo.FillData(lstMyDataList[index]) == false)
MessageBox.Show("No data found");
}
}
現在的問題是子類的功能:如果COne
或CTwo
填充數據對象,它的回報類型爲CMyDataClass
的對象。但是我需要子類的對象,即如果COne
填充了對象,那麼對象應該是COne
類型,或者如果CTwo
那麼對象應該是 CTwo
對象。
所以我改變了我的Child
類作爲
class COne : CMyDataClass
{
public static bool FillData(CMyDataClass objCMDClass)
{
if (objCMDClass.nType == 1)
{
COne obj=new COne();
obj.strIndex = "Index-One";
obj.strName = "One";
objCMDClass=obj
return true;
}
return false;
}
}
但這不會填寫lstMyDataList
對象,「因爲它創建了一個新的對象。
如果我的CMyDataClass
是抽象的,我可以使用type cast
。但是,如果我把它作爲抽象,我不能填充lstMyDataList
如下(對象類型未知)。
List<CMyDataClass> lstMyDataList = new List<CMyDataClass> { new CMyDataClass("", "", 1), new CMyDataClass("", "", 2) };
如何將對象轉換爲child
類型,在此基礎上類填充物?
非常感謝。