2

我有一个 C# 类,它使用 using关键字为一些公共属性定义了一些别名。这会导致“不一致的可访问性”编译器错误,因为由别名定义的类型显然不是公共的。我怎样才能使别名定义的类型也公开,这样错误就消失了?

// Alias defined at the top of the source file just below the other "using"
//  "using" statements that bring in the needed modules.
using TDynamicStringArray = System.Collections.Generic.List<string>;

// Public property defined with the type alias.
public TDynamicStringArray Strs
{
    ...
}

这是从编译器收到的错误:

Error   2   Inconsistent accessibility: property type 'TDynamicStringArray' is less accessible than property 'Strs'

我尝试将public放在使用之前,但这不起作用。我查看了有关“不一致的可访问性”主题的其他几个 SO 线程,但没有看到任何处理使用 using关键字创建的类型别名的线程。

我使用别名的原因是因为我正在从另一种语言转换一些旧代码,它简化了转换过程。否则我只会使用没有别名的基础类型。

4

2 回答 2

2

不,您不能通过任何其他机制更改类型的可访问性,只能更改类型本身。

如果您无法修改该类型的源代码,则唯一的选择是将其包装在您的自定义公共类型中。

于 2013-03-24T22:01:47.880 回答
2

别名不定义类型;它们只是指现有类型。没有与别名关联的可访问性。

在您的示例中,List<string>是公开的,您不应收到该错误消息。我的猜测是您在某个地方有一个非公共TDynamicStringArray课程,并且根本没有使用别名。

于 2013-03-24T22:44:23.110 回答