0

我想创建一个用户系统,每个用户都有角色/权限。我希望使用反射自动生成可配置权限列表。代码将扫描所有程序集,查找定义用户需要具有执行权限的模块(类)或功能(函数)的权限和描述的属性。

现在 GUI 当然不应该显示或禁用不允许用户做的事情。但我想确保它被选中,允许用户在执行某个功能/模块时自动执行它。

因此,每当一个 GUI 组件因错误而启用时,用户单击它,但不允许执行其功能,就会引发异常。

如果有某种方法可以在输入带有特定属性的函数时自动执行代码,那就太好了。因此,代码可以验证用户是否被允许执行功能或抛出适当的异常。

我知道我可以通过在输入函数的第一件事时调用一个函数来实现这一点。使用GetCurrentMethod获取MethodInfo.Attributes来判断该函数是否允许用户执行。

但是,我希望不必添加执行用户权限检查的第一行代码,但在定义属性时会自动检查权限。这可能吗?

还是我自己发明了轮子,我的“问题”是否有开箱即用的解决方案?

4

1 回答 1

1

您可以通过使用面向方面的编程来做到这一点,例如使用 PostSharp。更多关于这里的信息:http ://www.postsharp.net/aspects/method-decorator

它将允许您使用包含 OnEntry 方法的属性来装饰您的方法,该方法将在调用实际方法之前自动调用。

注意:PostSharp 将分析您的程序集并在编译后更改它!它只会为您包含 OnEntry 调用。据我所知,C# 本身不支持这种行为。这可能有点烦人,具体取决于您的构建管道的复杂程度。在调试过程中也可能令人困惑。

于 2013-10-11T06:00:24.123 回答