Person
以下に定義するように、自分のシステムから出力する機能を提供したいと考えてvCard
います。ユーザーにプライバシーオプションを提供するために、ユーザーは特定のプロパティを表示/非表示にするかどうかを選択できます。最も単純な形式では、ユーザーの選択肢を保持する別のテーブルが必要です。
configurator table
リフレクションを使用してこれを構築できるかどうか疑問に思っていました。以下のPerson
モデルに示すように、カスタム属性でプロパティを装飾し、それらのプロパティを使用して、bool
装飾されたすべてのプロパティのプロパティを持つモデルを構築および永続化できPerson
ます。
public class Person
{
public string UserName { get; set; }
public string FirstName { get; set; }
[DisplayOnVCard]
public string LastName { get; set; }
[DisplayOnVCard]
public string Email { get; set; }
[DisplayOnVCard]
public string MobilePhone { get; set; }
}
**[DisplayOnVCard]
はカスタム属性です。*
これの終わりに、これに対応するデータベース内のテーブルを期待しています:
public class VCardConfigurator
{
public bool LastName { get; set; }
public bool Email { get; set; }
public bool MobilePhone { get; set; }
}
これは、実際に巨大なエンティティとは何かを表すサンプルにすぎません。そのため、bool フィールドを各オプション プロパティに手動でマッピングすることは避けたいと考えています。
この問題のドメインは、たとえば、ソーシャル ネットワーキング サイトでのプライバシー設定の仕組みと非常によく似ていると思います。
これを入力している間、いずれプロパティの 1 つから属性を削除することになった場合、それがどのような影響を与える可能性があるかについて考えました。少し考える必要があります!
自己のためのさらなる読書:
完全に間違った道を疾走している可能性が非常に高いです。もしそうなら、そうアドバイスしてください!