訪問我想創建一個類下面的例子:如何使外部對象的字段中derivered類
class BaseClass
{
protected int a;
}
class DeriveredClass : BaseClass
{
protected int ownA;
public void CopyFrom(BaseClass b)
{
ownA = b.a;
}
}
但它似乎是不可能的,因爲保護級別。問題是「b」是CopyFrom()方法內的外部對象。
確切的代碼我想使用它的是創建一個Singleton對象與它升級到派生類型的對象的可能性:
class MyLogicBase
{
private static MyLogicBase s_Instance = new MyLogicBase();
protected MyLogicBase() { }
public static MyLogicBase Instance
{ get { return s_Instance; } }
public static Upgrade(MyLogicBase newInstance)
{
newInstance.UpgradeInstance(s_Instance);
s_Instance = newInstance;
}
protected virtual void UpgradeInstance(MyLogicBase previousInstance)
{ // To override }
protected List<string> m_Database = new List<string>();
}
class MyExtendedLogic : MyLogicBase
{
public override void UpgradeInstance(MyLogicBase newInstance)
{
m_Database = newInstance.m_Database;
}
// Extended logic here
}
您好!感謝您的快速回復。意外的是,我寫了一個代碼示例,它不顯示我想解決的問題。我很抱歉我的錯誤。更正它。問題是我希望派生類使用基類對象進行自身設置,而基類對象的文件仍然保留爲其他類。 –
@KamilKowalewski解決方案仍然是一樣的。 'UpgradeInstance'虛擬方法是複製'm_Database'字段的正確位置。如果出於任何原因,您不希望在基類「UpgradeInstance」中出現像這樣的共同行爲,請爲此目的另外聲明一個方法。 –
這使它比我更復雜一點,儘管它可能是。不同的派生類可以以不同的方式使用不同的基類字段。但是這解決了我目前的需求。謝謝! –