美文网首页dotNET
c#Winform、WPF利用反射进行简单的权限控制

c#Winform、WPF利用反射进行简单的权限控制

作者: czly | 来源:发表于2017-02-23 09:45 被阅读0次

使用反射,获取窗体上的类型为Component的对象,根据对象名称到权限集合里判断是否有权限。
<pre>
public class Permission
{
public virtual Dictionary<string, bool> GetPermissions(string moduleName)
{
Dictionary<string, bool> permissions = new Dictionary<string, bool>();
permissions.Add("button1",false);
return permissions;
}

    public void SetPermission(Form form)
    {
        Type t = form.GetType();
        FieldInfo[] fs = t.GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
        IDictionary<string, bool> permissions = GetPermissions(form.Name);

        foreach (FieldInfo f in fs)
        {
            dynamic component = f.GetValue(form);
            if (component is System.ComponentModel.Component && permissions.ContainsKey(f.Name))
            {
                try
                {
                    component.Enabled = permissions[f.Name];
                }
                catch { }
            }
        }
    }
}

</pre>
如果是WPF,则需要修改下,SetPermission的参数改成Window;判断改成
<pre>
if (component is System.Windows.Controls.Control && permissions.ContainsKey(f.Name))
{
try
{

                    component.IsEnabled = permissions[f.Name];
                }
                catch { }
            }

</pre>

GetPermissions方法根据模块名称,到数据库中获取相应的功能权限。

相关文章

网友评论

    本文标题:c#Winform、WPF利用反射进行简单的权限控制

    本文链接:https://www.haomeiwen.com/subject/rwemwttx.html