2

一部のパブリック プロパティのusingキーワードを使用していくつかのエイリアスを定義する C# クラスがあります。これは、明らかにエイリアスによって定義された型が公開されていないため、「一貫性のないアクセシビリティ」コンパイラ エラーにつながります。エラーが消えるように、エイリアスによって定義された型も公開するにはどうすればよいですか?

// 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をusingの前に置いてみましたが、うまくいきません。「一貫性のないアクセシビリティ」のトピックに関する他のいくつかの SO スレッドを見ましたが、 usingキーワードで作成された型エイリアスを扱うものは見当たりませんでした。

エイリアスを使用する理由は、古いコードを別の言語から変換するためであり、変換プロセスが簡素化されます。それ以外の場合は、エイリアスなしで基になる型を使用します。

4

2 に答える 2

2

エイリアスは型を定義しません。それらは既存のタイプを参照するだけです。エイリアスに関連付けられたアクセシビリティはありません。

あなたの例でList<string>は公開されており、そのエラーメッセージは表示されません。私の推測では、どこかに非公開TDynamicStringArrayクラスがあり、エイリアスはまったく使用されていません。

于 2013-03-24T22:44:23.110 に答える
2

いいえ、他のメカニズムを介して型のアクセシビリティを変更することはできませんが、型自体を変更することはできません。

型のソースを変更できない場合、唯一のオプションは、カスタム パブリック型でラップすることです。

于 2013-03-24T22:01:47.880 に答える