【发布时间】:2018-02-11 07:37:10
【问题描述】:
我想为以下示例创建一个类:
class BaseClass
{
protected int a;
}
class DeriveredClass : BaseClass
{
protected int ownA;
public void CopyFrom(BaseClass b)
{
ownA = b.a;
}
}
但由于保护级别,这似乎是不可能的。问题是“b”是 CopyFrom() 方法中的一个外部对象。
我想使用它的确切代码是创建一个单例对象,并有可能将其升级为派生类型的对象:
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
}
【问题讨论】:
标签: c# field external protected