我有这种情况
public class Base
{
public Basedef def;
}
public class A : Base
{
}
public class B : A
{
public int GetBar()
{
return def.bar;
}
}
public class BaseDef
{
}
public class ADef : BaseDef
{
public int foo;
}
public class BDef : ADef
{
public int bar;
}
如您所见,方法 B:GetBar() 中存在错误,因为 def 无法访问 bar,但是如果您使...
public int GetBar()
{
return (def as BDef).bar;
}
应该可以工作,但我想避免强制转换,如何使用在基类中创建的引用从定义中获取属性而不使用强制转换?
为什么要避免强制转换?,因为容易出现运行时错误并且更容易引入错误,我想要类型安全的编码。
我想要做什么
public class Factory
{
public static Base<BaseDef> Create(BaseDef d)
{
if(d is BDef)
return new B(); //Error, can not convert B to Base<BaseDef>
}
}
public class Program
{
B instance = Factory.Create(new BDef()); //Error, can not convert to Base<BaseDef> to B
}
我正在寻找一个优雅的解决方案
再见!