私の状況は次のとおりです。 Entity Frameworkでデータベースファーストアプローチを使用してMVC WebサイトをVisual Studio 2013でコーディングしています。EFでMVCの部分クラスのカスタム属性にアクセス
EFが自動的にモデルを生成します。しかし、私はカスタム属性を追加する必要があります(データ検証には必須ではなく、内部プロセスにも必須です)。リフレクションによって、これらのカスタム属性にアクセスします。
私は以下のアプローチを試みたのは、私が
public partial class Application {
public int AppID {get; set;}
public string Name {get; set;}
//etc...
}
を持っているとしましょう:私は部分クラスを継続し、別のファイルに
•を:
public partial class Application {
[MyAttributeOne]
public int AppID { get; set; }
[DataType(DataType.Text)]
[MyAttributeTwo]
public string Name { get; set; }
}
•メタデータクラスを使用します
public class ApplicationMetadata {
[MyAttributeOne]
public int SolutionID { get; set; }
[DataType(DataType.Text)]
[MyAttributeTwo]
public string Name { get; set; }
}
[MetadataType(typeof(ApplicationMetadata))]
public partial class Application { }
public class ApplicationMetadata {
[MyAttributeOne]
public int SolutionID { get; set; }
[DataType(DataType.Text)]
[MyAttributeTwo]
public string Name { get; set; }
}
public partial class Application : ApplicationMetadata { }
•そして、私は基本的に前の2つのアプローチを行う代わりに、私は「アプリケーション」クラス内の属性を持つクラスを定義する「バディ・クラス」アプローチ:•属性を持つクラスを継承します。
何か間違っていますか?それともこれは単に不可能なのでしょうか?
私は、次のコードを動作させることができるようにする必要があります:
foreach (PropertyInfo propertyInfo in currentObject.GetType().GetProperties())
{
foreach (CustomAttributeData attrData in propertyInfo.GetCustomAttributesData())
{
if (typeof(attrData) == typeof(MyAttributeOne))
//stuff
else if (typeof(attrData) == typeof(MyAttributeTwo))
//different stuff
else
//yet more stuff
}
}
は注意をありがとうございました!よろしくです。 よろしくお願いします。
どのようにメタデータを置くことについてまったく違うクラス? [this](https://msdn.microsoft.com/en-us/library/ee707339(v = vs.91).ASPX)と同じ方法で。 – DavidG
私はそれを試みました.2番目の例は、別のクラスのメタデータですか、別の_file_を意味していますか?それは何か変わるだろうか? – RaulTheThinker
私は、エンティティが継承するものではなく、全く異なるクラスを意味します。 – DavidG