2017-09-06 26 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仅用于跨多个源文件分割一个类。类定义本身必须相同。

相关问题