码迷,mamicode.com
首页 > 其他好文 > 详细

自定义特性用途---案例:操作权限

时间:2014-11-05 00:38:28      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:自定义特性用途   c#自定义特性用途   特性   自定义   c#特性   c#自定义特性案例   

--------------------------------------------------LimitAttribute.cs   自定义特性

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// LimitAttribute 的摘要说明
/// </summary>
//特性只作用与方法上
[AttributeUsage(AttributeTargets.Method)]
public class LimitAttribute:Attribute
{
    private string _name;
    public string Name
    {
        get { return _name; }
    }
 public LimitAttribute(string name)
 {
        this._name = name;
 }
}

--------------------------------------------------Default.aspx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Reflection;
public partial class _Default : System.Web.UI.Page
{
    public static readonly string _name = "李四";
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    /// <summary>
    /// 判断该用户是否有执行权限
    /// </summary>
    /// <param name="name">用户名称</param>
    /// <param name="method">方法名称</param>
    /// <returns></returns>
    private bool IsLimit(string name, string method)
    {
        //获取该类型
        Type t = typeof(_Default);
        //查找该方法
        MethodInfo mi = t.GetMethod(method);
        if (mi == null)
            return false;
        
        //获取方法上的特性
        LimitAttribute la = Attribute.GetCustomAttribute(mi, typeof(LimitAttribute)) as LimitAttribute;
        if (la == null)
            return false;
        
        //判断用户
        if (la.Name == name)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    [Limit("张三")]
    public void btnView_Click(object sender, EventArgs e)
    {
        if (IsLimit(_name, "btnView_Click"))
        {
            ClientScript.RegisterStartupScript(this.GetType(), "ClientScript", "alert(‘我是查看‘)", true);
        }
        else
        {
            ClientScript.RegisterStartupScript(this.GetType(), "ClientScript", "alert(‘对不起,您没有权限操作‘)", true);
        }
    }
    [Limit("李四")]
    public void btnEdit_Click(object sender, EventArgs e)
    {
        if (IsLimit(_name, "btnEdit_Click"))
        {
            ClientScript.RegisterStartupScript(this.GetType(), "ClientScript", "alert(‘我是修改‘)", true);
        }
        else
        {
            ClientScript.RegisterStartupScript(this.GetType(), "ClientScript", "alert(‘对不起,您没有权限操作‘)", true);
        }
    }
    [Limit("李四")]
    public void btnAdd_Click(object sender, EventArgs e)
    {
        if (IsLimit(_name, "btnAdd_Click"))
        {
            ClientScript.RegisterStartupScript(this.GetType(), "ClientScript", "alert(‘我是添加‘)", true);
        }
        else
        {
            ClientScript.RegisterStartupScript(this.GetType(), "ClientScript", "alert(‘对不起,您没有权限操作‘)", true);
        }
    }
    [Limit("王五")]
    public void btnDel_Click(object sender, EventArgs e)
    {
        if (IsLimit(_name, "btnDel_Click"))
        {
            ClientScript.RegisterStartupScript(this.GetType(), "ClientScript", "alert(‘我是删除‘)", true);
        }
        else
        {
            ClientScript.RegisterStartupScript(this.GetType(), "ClientScript", "alert(‘对不起,您没有权限操作‘)", true);
        }
    }
}

bubuko.com,布布扣

本文出自 “程序猿的家--Hunter” 博客,请务必保留此出处http://962410314.blog.51cto.com/7563109/1571852

自定义特性用途---案例:操作权限

标签:自定义特性用途   c#自定义特性用途   特性   自定义   c#特性   c#自定义特性案例   

原文地址:http://962410314.blog.51cto.com/7563109/1571852

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!