2017-09-06 54 views
-4

有像下面的樣本類定義:是否有可能在C#定義一個局部通用類

public abstract partial class MyClass<T> where T : MyClass<T> 
{ 
.... 
} 

而第二個文件由下面的定義的:

partial class MyClass<T> 
{ 
} 

另外,我在第二個文件中定義了部分部分,如下面的代碼片段所示:

partial class MyClass<T> where T : MyClass<T> 

通過在C#中使用partial關鍵字失敗,嘗試將此特定抽象類拆分爲兩個單獨的文件。所以,令人驚訝的是,編譯器通過生成編譯錯誤來攔截它。事實上,一個變量和屬性從第一個部分移到第二個部分,編譯器在第一個類中發現錯誤,無法找到變量和屬性。

我試過很多情況下,但沒有運氣。

是否有我們在分裂這樣的定義做錯了什麼,或者是編譯器的行爲?

+0

請看看到https://stackoverflow.com/questions/5690301/using-partial-on-a-generic-class –

+1

@MisterQ不,這不是重複。在發佈這篇文章之前,我檢查了這個問題。這是一種不同的情緒。 – Arash

+3

錯誤的文字是什麼? – Dmitry

回答

3

這裏是部分通用類會是什麼樣子。

public partial class MyClass<T> where T : MyClass<T> 
{ 
    public void SomeMethod() { Console.WriteLine("some method"); } 
} 

public partial class MyClass<T> where T : MyClass<T> 
{ 
    public void SomeOtherMethod() { Console.WriteLine("some other method"); } 
} 
+1

這不是這種情況:其中T:MyOtherClass – Arash

+0

@Arash - 那麼您的泛型類型參數與您定義的類相同?不知道如何工作.. – CalC

+1

@CornelC - 要清楚,Arash不是從同一類繼承,而是指定/限制類型參數。否則,我認爲你發佈的內容很好地說明了這個問題。 – CalC

0

partial僅用於跨多個源文件分割一個類。類定義本身必須相同。

相關問題