1

私はPOCOオブジェクトのメタデータクラスを作成しています。私は、 "CSVColumn"(LINQToCSVから)属性をメタデータクラスに追加しています。しかし、私はプログラムを実行すると、その属性を見つけることができませんでした。entityframeworkのMetaDataクラスPOCO

だから私は、それはacutally "GetCustomAttributes" を呼び出すことによって、何も返さない反射、

Type t = typeof(Case); 
PropertyInfo pi = t.GetProperty("ProviderId"); 
//bool isReadOnly = ReadOnlyAttribute.IsDefined(pi,typeof(ReadOnlyAttribute); 
var attributes = pi.GetCustomAttributes(typeof(Case),true); 

を使用してそれをテストしました。

どうしたのですか?

以下は、メタデータクラスを作成した方法です。

私が理解できないことは、MVCの検証ではうまく動作することです。どのようにカスタム属性を取得するのだろうか?

これはentityframework POCOオブジェクトここ

public partial class Case 
{ 
public string ProviderName { get; set; }   
public string ProviderId { get; set; } 
} 

である私は、誰かが感謝、私を助けることができるしてください

[MetadataType(typeof(CaseMetaData))] 
public partial class Case 
{ 
    public class CaseMetaData 
    { 

     [CsvColumn(Name = "ProviderName", FieldIndex = 1)] 
     public string ProviderName { get; set; } 

     [CsvColumn(Name = "ProviderID", FieldIndex = 2)] 
     public string ProviderId { get; set; } 

    } 

} 

、ケースおよびメタデータクラスの部分クラスを作成します。

乾杯

答えて

2

typeof(Case)は、属性タイプではありません。
typeof(CsvColumnAttribute)を意味します。

また、Reflectionはメタデータクラスを認識しません。
AssociatedMetadataTypeTypeDescriptionProviderを使用する必要があります。

良い例が見つかりましたhere

+0

すみませんでした。あなたの迅速な答えをありがとう、私はそれを探します。乾杯 – superwalnut

関連する問題