VS编译器不允许创建密封暴露类型WINMD类型库。
这是为什么限制放在哪里? (我知道密封类型的优势,我的问题是关于赢RT组件)。
VS编译器不允许创建密封暴露类型WINMD类型库。
这是为什么限制放在哪里? (我知道密封类型的优势,我的问题是关于赢RT组件)。
这是一个体系结构限制,通过COM罚款。 在任何的WinRT类型的核心,坐镇,他们是从IUnknown和IInspectable的。 与COM的问题是,它仅支持接口继承,但没有实现继承。 这是一个强大的COM设计目标,实现继承与实施细则,其中包括臭名昭著的钻石问题过于忧虑。
有一个办法,各代表团进行继承工作,在派生类中的每个方法明确调用相应的基本接口的方法,但是这是非常痛苦的做自己。 但除此之外,该Windows.UI.Xaml类实现继承的方式。
我认为,其原因是因为暴露的类型应该是可用的所有不同类型的语言(C#,C ++,JavaScript的,未来可能更多)。
所以,如果你有一个类,那么使用类的一个被覆盖成新类。 我想在此改变类,即在不同的语言来完成。 但是,这是一个问题。 你怎么想覆盖在C#中做一个基类,通过继承类C ++做了什么? 这不能工作,因为这两个有完全地不同和不兼容的OOP实现。
通过迫使暴露类密封,你可以解决这一问题,并确保人们不会尝试做这样的事情。
我敢肯定有东西比这更根本的,但这是来到我的脑海里第一。