与泛型一起使用的方法的保护级别

时间:2013-06-11 11:47:40

标签: c# generics protection

我的通用类定义如下:

public class MySortedList<TKey, TItem> where TItem : MyClass<TKey>

在一个类'方法中,我创建一个TItem实例并调用其受保护的方法之一:

TItemInstance.MyMethod();

我在这里得到错误

  

由于其保护级别

,MyMethod无法访问

MyMethod应该提供什么样的保护? 谢谢。

3 个答案:

答案 0 :(得分:3)

声明为protected的方法只能在类及其子类中使用。

如果您想在课堂外使用方法,则应将其声明为public

public void MyMethod()

或者,如果调用者在同一个程序集中定义,internal

internal void MyMethod()

答案 1 :(得分:1)

由于MySortedList并非来自TItem,因此您需要公开该方法,以便可以从MySortedList调用此方法。

您只能从定义类或其派生类之一调用受保护的方法。

有关详细信息,请参阅the Microsoft documentation

答案 2 :(得分:0)

您拥有MyMethod函数的类必须声明为public,因为在这里您要在类之外使用该方法。所以它应该是public