C#中的特性(Attribute)用途?

你好:1、问C#中的特性(Attribute)都有什么用途?2、它可以用来验证某用户是否有操作某方法的权限吗?我没有什么分,还请帮忙解答一下如果可以用来验证某用户是否有操... 你好:
1、问C#中的特性(Attribute)都有什么用途?
2、它可以用来验证某用户是否有操作某方法的权限吗?
我没有什么分,还请帮忙解答一下
如果可以用来验证某用户是否有操作某方法的权限,请给个例子好吗,谢谢啦
展开
 我来答
灰姑娘的霸气
推荐于2016-05-21 · TA获得超过1.3万个赞
知道大有可为答主
回答量:3145
采纳率:72%
帮助的人:245万
展开全部
C# 特性(Attribute)详细介绍
1、什么是Atrribute 首先,我们肯定Attribute是一个类,下面是msdn文档对它的描述: 公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型、字段、方法和属性等。Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。 在.NET中,Attribute被用来处理多种问题,比如序列化、程序的安全特征、防止即时编译器对程序代码进行优化从而代码容易调试等等。下面,我们先来看几个在.NET中标准的属性的使用,稍后我们再回过头来讨论Attribute这个类本身。(文中的代码使用C#编写,但同样适用所有基于.NET的所有语言)
2、Attribute作为编译器的指令 在C#中存在着一定数量的编译器指令,如:#define DEBUG, #undefine DEBUG, #if等。这些指令专属于C#,而且在数量上是固定的。而Attribute用作编译器指令则不受数量限制。比如下面的三个Attribute: Conditional:起条件编译的作用,只有满足条件,才允许编译器对它的代码进行编译。一般在程序调试的时候使用。 DllImport:用来标记非.NET的函数,表明该方法在一个外部的DLL中定义。 Obsolete:这个属性用来标记当前的方法已经被废弃,不再使用了。
匿名用户
2012-08-14
展开全部
1、就是可以在类、方法、属性等 增加一些额外信息,类似java的annotation。
2、可以。但是需要对方法进行拦截,在对方法调用之前,利用反射等方法可以取得这些额外信息,从而进行判断。
追问
那么如何在调用方法之前,利用反射验证呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
画角连城
2012-08-13 · TA获得超过773个赞
知道小有建树答主
回答量:224
采纳率:0%
帮助的人:311万
展开全部
第一个问题,你可以参考我的另一个回答:http://zhidao.baidu.com/question/463506213.html
第二个问题,答案是可以。例子,我明天早上补充给你。
追问
请问,如果方便可以把例子发给我看看吗,谢谢了 ^_^
追答
给个Demo给你:
class Program
{
static void Main(string[] args)
{
Demo d=new Demo();
string userName="Lucy";

MethodInfo mi=d.GetType().GetMethod("Test");
if (mi == null) return;
AllowExecuteAttribute att=Attribute.GetCustomAttribute(mi, typeof(AllowExecuteAttribute)) as AllowExecuteAttribute;
if (att == null) return;
if (att.Check(userName))
Console.WriteLine("允许执行");
else
Console.WriteLine("不允许执行");
}
}

class Demo
{
[AllowExecute("Jack, Tom")]
public void Test() { }
}

///
/// 标识某方法允许执行的用户
///
[AttributeUsage(AttributeTargets.Method)]
public class AllowExecuteAttribute : Attribute
{
///
///
///
/// 允许执行的用户名的串联字符串
public AllowExecuteAttribute(string allowedUsers)
{
this._allowedUsers = allowedUsers;
}
private string _allowedUsers;

public bool Check(string userName)
{
return this._allowedUsers.ToLower().IndexOf(userName.ToLower()) > -1;
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-08-13
展开全部
C#中的特性(Attribute)它是用来标识类、方法的附加属性
追问
你说的这些我知道,主要是想知道第二个问题,能具体说说吗。如果是复制过来的就算了,那些讲的不清楚
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式