さて、私がそのような構造Aを持っているとしましょう:
Struct A{
private String _SomeText;
private int _SomeValue;
public A(String someText, int SomeValue) { /*.. set the initial values..*/ }
public String SomeText{ get { return _SomeText; } }
public int SomeValue{ get { return _SomeValue; } }
}
今、私ができるようにしたいのは、次のように、クラスABCのメソッドの結果としてその構造体Aを返すことです。
Class ABC{
public A getStructA(){
//creation of Struct A
return a;
}
}
ライブラリ(StructAとClassABCなどが含まれる)を使用しているプログラマーがStructAのインスタンスを作成できるようにし
たくありません。作成する唯一の方法はリターンとしてです。 getStructA()メソッドから。次に、適切なゲッターを介して値にアクセスできます。
それで、そのような制限を設定する方法はありますか?では、Structureを特定のクラスの外部でインスタンス化することはできませんか?C#、.Net4.0を使用します。
ご協力いただきありがとうございます。
---編集:----
なぜ私がこれを達成しようとしているのかについての詳細を追加するには:
- 私のクラスABCには、人が照会できる「ステータス」があります。このステータスには、2つの文字列値と、整数の長いリストがあります。
- プログラマーが「Status」のオブジェクト/インスタンスを作成する必要はありません。ステータスは、クラスの「getStatus()」関数によってのみ返されます。
- これらの3つのフィールドを異なるメソッドに分割したくないのは、それらを取得するために、3つのフィールドすべてで同様の構造体を返すWindows API(p / invoke)を呼び出しているためです。
- 実際に3つのメソッドに分割し、構造体を使用しない場合は、これら3つのメソッドのいずれかが呼び出されるたびに、結果をキャッシュするか、WindowsAPIからメソッドを呼び出す必要があります...
したがって、パブリック構造体を作成し、プログラマーが必要に応じてインスタンス化することもできます。これは、パラメーターとして受け入れることができるメソッドがないため、役に立たないでしょう。または、この構造体(または、作業が簡単になる場合はクラスに変更)がメソッドからの戻りとしてのみ取得できるようにライブラリを構築することもできます。