3

C# では、列挙型を定義するライブラリを使用しています。コードのコンシューマー (別のアセンブリ内) が、基になるライブラリ自体を参照することなく、関数の 1 つにパラメーターとして列挙値を渡すことができるようにしたいと考えています。

ライブラリの列挙を消費者に公開する方法はありますか?

4

3 に答える 3

9

サポートしたい値で独自の列挙型を定義し、それを消費者に公開し、呼び出す前にライブラリの列挙型に変換するだけです。列挙型は舞台裏の単なる数値であるため、ある列挙型の値を別の列挙型の値に変換するのは簡単です。

于 2008-10-22T11:25:46.127 に答える
3

int を受け取るオーバーロードを提供し、有効な値を記述してから、自分でキャストを実行できます。または、ライブラリで別の列挙を提供し、それを変換してから 2 番目のライブラリを呼び出すこともできます。

于 2008-10-22T11:27:25.890 に答える
1

どの合理的な理由がこれを行っているのか(「アセンブリ内の型からの消費者呼び出しメソッド」と「消費者が参照としてアセンブリを持っていない」の組み合わせ)は本当にわかりませんが、2つの方法があります。

1 つ目 (推奨): アセンブリを 2 つに分割する必要があります。1 つは enum 型の定義、もう 1 つは関数です。コンシューマーは、「最初の」アセンブリのみを参照します。

2 番目 (非推奨): 列挙型の代わりに (sbyte/(u)short/(u)int/(u)long) パラメーターを使用できます。

しかし、オブジェクト モデルの設計が一致していないと思います。

于 2008-10-22T11:28:46.340 に答える