2011-03-25 49 views
2

在WPF中刪除冗餘的繼承項目ReSharper的提供從Window類中刪除繼承冗餘:ReSharper的提供從Window類在WPF

using System.Windows; 

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 
} 

它成爲可能,甚至using System.Windows;刪除。

public partial class MainWindow 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 
} 

爲什麼他實際上提供這個,爲什麼沒有繼承一切正常?正如我在WPF的書中讀到的任何窗口都應該繼承...

回答

10

XAML代碼隱藏文件是部分類。編譯器從XAML文件生成的代碼還包含Window派生,因此代碼隱藏中的代碼是多餘的。

+0

這是一個很好的做法,以消除窗口繼承? – 2011-03-25 18:48:43

+0

它擺脫了Resharper警告,但也可以使代碼不易讀新手。它在最終輸出方面沒有任何差別,所以它確實是個人偏好。 – 2011-03-25 18:55:10

+2

你真的沒有刪除窗口繼承。該類仍然繼承Window,而不是在代碼隱藏文件中。如果您在代碼隱藏中刪除它,仍然在設計器文件中指定。如果您在代碼隱藏中使用它,則會在兩個地方指定它。這就是它被標記爲多餘的原因。 – BinaryTox1n 2011-03-25 18:56:13

2

MainWindow您的MainWindow類(如大多數設計師生成的類)是partial類。這意味着您的類的實現可以分解爲多個文件,只要它們都在同一個程序集中。

由於設計人員爲MainWindow生成的文件也包含: Window,因此無需將其包含在任何其他文件中。