C# では、列挙型を定義するライブラリを使用しています。コードのコンシューマー (別のアセンブリ内) が、基になるライブラリ自体を参照することなく、関数の 1 つにパラメーターとして列挙値を渡すことができるようにしたいと考えています。
ライブラリの列挙を消費者に公開する方法はありますか?
サポートしたい値で独自の列挙型を定義し、それを消費者に公開し、呼び出す前にライブラリの列挙型に変換するだけです。列挙型は舞台裏の単なる数値であるため、ある列挙型の値を別の列挙型の値に変換するのは簡単です。
int を受け取るオーバーロードを提供し、有効な値を記述してから、自分でキャストを実行できます。または、ライブラリで別の列挙を提供し、それを変換してから 2 番目のライブラリを呼び出すこともできます。
どの合理的な理由がこれを行っているのか(「アセンブリ内の型からの消費者呼び出しメソッド」と「消費者が参照としてアセンブリを持っていない」の組み合わせ)は本当にわかりませんが、2つの方法があります。
1 つ目 (推奨): アセンブリを 2 つに分割する必要があります。1 つは enum 型の定義、もう 1 つは関数です。コンシューマーは、「最初の」アセンブリのみを参照します。
2 番目 (非推奨): 列挙型の代わりに (sbyte/(u)short/(u)int/(u)long) パラメーターを使用できます。
しかし、オブジェクト モデルの設計が一致していないと思います。