C# 求救。。关于不是特性类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 求救。。关于不是特性类相关的知识,希望对你有一定的参考价值。
//不明白这样定义了类之后,编译器告诉我这不是特性类。。哪里出问题了
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;
namespace Supreme.InformationAttribute
[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method,AllowMultiple=true,Inherited=false)]
public class InformationAttribute:Attribute
private string name;
public string Name
get
return name;
private string issue;
public string Issue
get
return issue;
public InformationAttribute(string name, string issue)
this.name = name;
this.issue = issue;
//public InformationAttribute(string issue, string name)
//
// this.issue = issue;
// this.name = name;
//
public InformationAttribute()
this.name = "defualt";
this.issue = "null";
空间外,其他的没有问题。
下面是测试代码,都可以正常编译。
你的问题是不是有其他的类编译不过去呢?仔细查看异常信息内容已经异常信息发生的位置,你可能会有收获。
public class Class1
[Information("aa", "bb")]
public void TestAttribute()
追问
我把特性附着在类上面时。。编译器就提示不是特性类了。。
追答放在类上就有问题了,看一下你的声明,即支持Class也支持Method。
在我的编译器上面是可以通过编译的。你可看一下你的类定义,或是修改你的Attribute的声明。
[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method,AllowMultiple=true,Inherited=false)]
[Information("aa", "bb")]
public class Class1
public void TestAttribute()
(多选题)关于C#中的特性,说法错误的是()。
A.自定义的特性必须继承System.Attribute类
B.Obsolete特性表示一个类不能序列化
C.类的属性上不能有特性
D.一个类只能有一个特性
B,Obsolete 特性将某个程序实体标记为一个建议不再使用的实体。NonSerialized特性指示可序列化类的某个字段不应被序列化。
C,特性可应用于Assembly(程序集)、Module(模块)、Class(类)、Struct(结构)、Enum(枚举)、Constructor(构造函数)、Method(方法)、Property(属性)、Field(字段)、Event(事件)、Interface(接口)、Parameter(参数)、Delegate(委托)、ReturnValue(返回值)、GenericParameter(泛型参数),见
http://msdn.microsoft.com/zh-cn/library/system.attributetargets.aspx
D,一个还是多个特性取决于特性声明,单笼统的说“只能有一个”是错的
综合:B、C、D都是错的,A正确 参考技术A B,obsolete是过时的,编译会有提示或错误.
C,属性上也可以有Attribute
D,可以有多个Attribute
以上是关于C# 求救。。关于不是特性类的主要内容,如果未能解决你的问题,请参考以下文章