私は次の列挙型を持っています:
[Flags]
public enum PostAssociations
{
None = 0x0,
User = 0x1,
Comments = 0x2,
CommentsUser = 0x3
}
出発点として、これらのフラグが正しいかどうかはわかりません。
これを行っているのは、Entity Framework の "Includes" を定義する流暢な方法があるためです (EF Include メソッドは文字列を受け取るため、UI に公開したくないため)。
サービス層がPostAssociationsを受け入れることができるようにしたいので、サービス層では拡張メソッドを利用してこれを文字列[]に変換します。(私のリポジトリは、.Include を実行するために分割されます)。
私は Flags Enum をあまり使っていないので、無知で申し訳ありません。:)
これは私が欲しいものの「真理値表」です (列挙値、変換された文字列[])
None = null
User = new string[] { "User" }
Comments = new string[] { "Comments" }
User, Comments = new string[] { "User", "Comments" }
Comments, CommentsUser = new string[] { "Comments", "Comments.User" }
User, Comments, CommentsUser = new string[] { "User", "Comments", "Comments.User" }
コメントなしで CommentsUser を持つことはできません。
だから私は3つのことで助けが必要です:
- その真理値表に一致するように列挙型を設定する方法は?
- これらの例の 1 つのサービス層を呼び出すにはどうすればよいですか?
- その列挙型を文字列配列に変換する拡張メソッドを作成するにはどうすればよいですか?
もちろん、私がやろうとしていることを行うためのより良い方法を皆さんが考えることができれば、それも検討します. 基本的に、列挙型の背後にある EF インクルードの「魔法の文字列」をマスクしようとしています。
みんなありがとう。