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

问题描述 投票:0回答:3

我的通用类定义如下:

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

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

TItemInstance.MyMethod();

这里我得到的错误是

MyMethod 由于其保护级别而无法访问

MyMethod 应该有什么级别的保护?
谢谢你。

c# generics protected
3个回答
3
投票

声明为

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

如果你想在类外使用方法,你应该声明为

public

public void MyMethod()

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

internal
:

internal void MyMethod()

1
投票

因为

MySortedList
不是从
TItem
派生的,所以您需要将有问题的方法公开,以便它可以从
MySortedList
调用。

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

有关详细信息,请参阅Microsoft 文档


0
投票

你有

MyMethod
函数的类必须声明为
public
,因为在这里你想在类外使用那个方法。所以应该是
public
.

© www.soinside.com 2019 - 2024. All rights reserved.