C# 扩展页面类

C# 扩展页面类,c#,wpf,xaml,inheritance,polymorphism,C#,Wpf,Xaml,Inheritance,Polymorphism,是否可以扩展C#的WPF工具包中的“Page”类(或者分别扩展任何其他WPF类)? 我想做的是: public class ExtendedPage : Page{ protected void doStuff(){ // lots of joy n pleasure } } public partial class RandomWindow : ExtendedPage{ private void randomMethod(){ doStuff();

是否可以扩展C#的WPF工具包中的“Page”类(或者分别扩展任何其他WPF类)? 我想做的是:

public class ExtendedPage : Page{
   protected void doStuff(){
      // lots of joy n pleasure
   }
}

public partial class RandomWindow : ExtendedPage{
   private void randomMethod(){
      doStuff(); // causes error
   }
}
我问这个问题的原因很明显:在扩展了Page类(ExtendedPage)之后,子类(RandomWindow)没有访问其基方法的权限。 这(至少我猜是这样)是由于随机窗口是局部的情况造成的。不幸的是,这个类是由WPF生成的(链接到相应的*.xaml),因此我无法找到分部类的其他部分

这个问题可能会引出一个非常明显的答案,让我看起来像个十足的白痴,但显然我无法理解。我可以补充一点,我刚刚开始使用C语言,我的编程来源是Java

确切的错误消息是“类型”的部分声明不能指定不同的基类”(CS0263)

作为对其中一条评论的回应:*.xaml中“Page”的声明似乎生成了一个代码隐藏文件,其基类是“Page”(而不是ExtendedPage)。更改此选项似乎也不起作用,编译器会抱怨找不到类型ExtendedPage

<Page x:Class="...RandomWindow" ... />
// to
<src:ExtendedPage x:class="...RandomWindow" 
xlmns:src="...ExtendedPage" />

//到
扩展Page类(ExtendedPage)后,子类 (随机窗口)无法访问其基础的方法

这是错误的。扩展类,如果可能的话,可以访问基类的所有
public
protected
成员

Partial只和类的代码在不同文件之间的分布有关,而和编译后的真实表示无关。编译后,它成为一个单一的实体类型

你在这里发布的内容应该可以正常工作

“type”的分部声明不能指定不同的基类

好吧,这是一个不需要思考的问题,你可能在某处有一个XAML,它看起来像这样:


但是,隐式指定
页面
作为基础,您需要:



部分
与此无关。虽然您可能希望尝试将其命名为
base.doStuff()
,但您发布的内容应该可以正常工作。请告诉我们错误。(也可能是C#中的大写惯例)也不起作用,当然已经尝试过了。我猜“部分”导致错误是基于RandomWindow实际上是WPF生成的类的知识,链接到XAML-并且extend命令在某种程度上被分部类的另一部分覆盖…@user1004816:您得到的确切错误是什么?您可以为该类添加自己的分部,并将该方法放在那里。这不会被生成器覆盖(事实上,这是partials的主要用例)。我知道它应该工作什么,但它没有。我刚刚在原始问题中添加了确切的错误。@user1004816:您可能跳入了类型陷阱,如此问题中接受的答案所述:。请看一看,这可能是原因。不幸的是,我在实施解决方案方面没有运气。我将在我的问题中添加xaml更改。我真的认为这就是解决方案,但编译器不断地告诉我“local:ExtendedPage”类型不存在,并且每个程序集引用都必须有效-即使没有该死的程序集引用。@user1004816:请参阅我对您的问题的评论。好的,我现在要打我的同事-他拼错了xmlns。谢谢,效果很好。@user1004816:很高兴这有帮助:)