12

プロパティにDataMemberAttributeが適用されているかどうかを確認しようとしています(TypeDescriptorを使用)

これは私が今持っているものです:

PropertyDescriptor targetProp = targetProps[i];

var has = argetProp.Attributes.Contains(
Attribute.GetCustomAttribute(typeof(DataMemberAttribute).Assembly,typeof(DataMemberAttribute)));

問題はそれです

Attribute.GetCustomAttribute(typeof(DataMemberAttribute).Assembly,typeof(DataMemberAttribute))

nullを返します

4

3 に答える 3

31

LINQを使用できます。.OfType<T>()および拡張メソッドのチェーンは、.Any()うまく機能します。

PropertyDescriptor targetProp = targetProps[i];
bool hasDataMember = targetProp.Attributes.OfType<DataMemberAttribute>().Any();
于 2012-06-29T10:24:28.487 に答える
1

そこにもっと良い答えが見つかりました:https ://stackoverflow.com/a/2051116/605586

基本的には、次のものを使用できます。

bool hasDataMember = Attribute.IsDefined(property, typeof(DataMemberAttribute));
于 2015-07-08T11:24:29.830 に答える
1

3つの方法があります:

  • 初め:

    PropertyDescriptor targetProp = targetProps[i];
    bool hasDataMember = targetProp.Attributes.Contains(new DataMemberAttribute());
    
  • 2番:

    PropertyDescriptor targetProp = targetProps[i];
    bool hasDataMember = targetProp.Attributes.OfType<DataMemberAttribute>().Any();
    
  • 第3:

    PropertyDescriptor targetProp = targetProps[i];
    bool hasDataMember = targetProp.Attributes.Matches(new DataMemberAttribute());
    

宜しくお願いします!

于 2020-03-07T17:09:23.563 に答える