方案:
我的Windows运行时组件项目中有3个类(A,B,C)。
class A{}
public sealed class B : A {}
public sealed class C : A {}
在编译上述代码时,我收到以下错误:
"不一致的可访问性:基类' A'不太容易接近 课程' C'。"
如果我将A类公开,则会出现编译错误:
"不支持导出未密封的类型。请标记类型 ' MyProject.A'密封。"
但是现在,如果我把A封装起来,那么B和C就不能继承它。
考虑到只允许WinRT类型继承,是否可以使用自定义/用户定义的类进行继承?如果没有,是否有任何解决方法来实现相同的目标?
答案 0 :(得分:1)
正如您自己想象的那样,您无法在Windows运行时组件中公开从其他人继承的类;即使您尝试将抽象类用作父类,也是如此。 这是使WinRT组件与WinRT框架支持的所有其他语言一起使用所需的“缺点”。 解决此问题的唯一方法是避免继承。 您只能使用可以模拟继承行为的接口或对象组合,例如:
public sealed class A
{
public void Method() { }
}
public sealed class B
{
A a;
public void Method()
{
// Do B stuff
// Call fake "virtual" method
a.Method();
}
}