【发布时间】:2021-07-18 13:08:14
【问题描述】:
最近,我需要使用子类的方法来处理基类中包含的私有数据。我的基类只能包含特定于域的类型(它只代表数据)。所以首先我决定在另一个项目中创建一个子类,并在其中实现处理逻辑。但问题是,一旦创建了基类的实例,就无法将其强制转换为子类型:
public class A
{
protected int member1;
public A(int value)
{
member1 = value;
}
}
public class B : A
{
public B (int value) : base(value)
{ }
public void DoSomething()
{
Console.Write(member1 * member1);
}
}
class Program
{
static void Main(string[] args)
{
A obj1 = new A(5);
B obj2 = (B)obj1; // InvalidCastException
obj2.DoSomething();
}
}
我开始考虑扩展方法。但是,您不能只从它们访问类的受保护字段。最后,我尝试将这两种方法结合起来。
【问题讨论】:
标签: c# extension-methods nested-types