如何在Attribute中使用自定义属性

时间:2021-12-23 20:37:13

    [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
    public class AAttribute : Attribute
    {
        public Int32 A1{ get; set; }
        public BB A2 { get; set; }
    }
    public class BB{
         public int B1{get;set;}
         public string B1{get;set;} 
         //其它
    }
    public class CC{
         //这里提示“A2”不是有效的命名特性参数,因为它不是有效的特性参数类型
         [AA(A2=null)]
         public int b1{get;set;}
    }

请问在Attribute中能否使用自定义类属性,应该如何使用?

9 个解决方案

#1


是[A(A2=null)]
不是[AA(A2=null)]吧,多写了一个A?

#2


A又是什么
AA又是什么
根本没定义这个东东好吧

#3


手写错误,就算是A也是同样的错

#4



public class CC{
         //这里提示“A2”不是有效的命名特性参数,因为它不是有效的特性参数类型
         [A(A2=null)]
         public int b1{get;set;}
    }

#5


引用 3 楼 zmcici 的回复:
手写错误,就算是A也是同样的错

那是因为A也没有定义啊,哪里有A

#6


引用 5 楼 Z65443344 的回复:
Quote: 引用 3 楼 zmcici 的回复:

手写错误,就算是A也是同样的错

那是因为A也没有定义啊,哪里有A

A就是AAttribute,后面的Attribute不用写

#7


引用 4 楼 zmcici 的回复:

public class CC{
         //这里提示“A2”不是有效的命名特性参数,因为它不是有效的特性参数类型
         [A(A2=null)]
         public int b1{get;set;}
    }


我以前一般使用Attribute时,内部属性都是简单的类型,如string,int,bool等,你的A2是个引用的属性,不知道是不是还要加什么限制

#8


引用 7 楼 gxingmin 的回复:
Quote: 引用 4 楼 zmcici 的回复:


public class CC{
         //这里提示“A2”不是有效的命名特性参数,因为它不是有效的特性参数类型
         [A(A2=null)]
         public int b1{get;set;}
    }


我以前一般使用Attribute时,内部属性都是简单的类型,如string,int,bool等,你的A2是个引用的属性,不知道是不是还要加什么限制

嗯是的,好像也发现只能是一些系统自带的类型,现在的做法是通过构造函数传入来解决

#9


如7楼说的 你的A2是自定义的类型BB
可能只能是基础类型
http://msdn.microsoft.com/zh-cn/library/sw480ze8.aspx

#1


是[A(A2=null)]
不是[AA(A2=null)]吧,多写了一个A?

#2


A又是什么
AA又是什么
根本没定义这个东东好吧

#3


手写错误,就算是A也是同样的错

#4



public class CC{
         //这里提示“A2”不是有效的命名特性参数,因为它不是有效的特性参数类型
         [A(A2=null)]
         public int b1{get;set;}
    }

#5


引用 3 楼 zmcici 的回复:
手写错误,就算是A也是同样的错

那是因为A也没有定义啊,哪里有A

#6


引用 5 楼 Z65443344 的回复:
Quote: 引用 3 楼 zmcici 的回复:

手写错误,就算是A也是同样的错

那是因为A也没有定义啊,哪里有A

A就是AAttribute,后面的Attribute不用写

#7


引用 4 楼 zmcici 的回复:

public class CC{
         //这里提示“A2”不是有效的命名特性参数,因为它不是有效的特性参数类型
         [A(A2=null)]
         public int b1{get;set;}
    }


我以前一般使用Attribute时,内部属性都是简单的类型,如string,int,bool等,你的A2是个引用的属性,不知道是不是还要加什么限制

#8


引用 7 楼 gxingmin 的回复:
Quote: 引用 4 楼 zmcici 的回复:


public class CC{
         //这里提示“A2”不是有效的命名特性参数,因为它不是有效的特性参数类型
         [A(A2=null)]
         public int b1{get;set;}
    }


我以前一般使用Attribute时,内部属性都是简单的类型,如string,int,bool等,你的A2是个引用的属性,不知道是不是还要加什么限制

嗯是的,好像也发现只能是一些系统自带的类型,现在的做法是通过构造函数传入来解决

#9


如7楼说的 你的A2是自定义的类型BB
可能只能是基础类型
http://msdn.microsoft.com/zh-cn/library/sw480ze8.aspx