自定义属性,用于确定方法是否可以处理

时间:2012-10-27 18:56:08

标签: c# winforms .net-4.0 attributes

我试图找出是否可以设置自定义属性来确定方法调用是否可以处理。我想要的是类似于我在MVC3应用程序中使用的[Authorize()]属性。

基本上,我有一个COM对象,我正在连接(第三方DMS软件),我想确保用户在处理方法内容之前没有关闭程序。我可以将调用包装在try/catch中,或者我可以包装一个检查application.running的方法,但我喜欢属性功能和简单标记(如果需要)。

到目前为止,我发现的所有教程/文档都是如何使用属性标记方法/类(它们通常在教程中使用字符串),然后在代码中访问这些字符串值。


如果可能的话,这不是我想要做的事情。再次,在MVC3 / 4中你可以做......

[Authorize()]
public class ControllerClass : Controller {
   public ActionResult Index(){ return View(); }
   ....etc....
}

在此示例中,始终必须由传递Authorize的人调用索引。我不确定是否需要实例化类或调用方法。

所以,毕竟我的问题很简单。可以为C#WinForms库实现类似于Authorize()的东西吗?

1 个答案:

答案 0 :(得分:2)

是的,您可以通过AOPPostSharp框架实施。样品:

[Serializable]
public class LogAttribute : OnMethodBoundaryAspect
{
    public override void OnEntry(MethodExecutionArgs args)
    {
        if (!application.running)
            throw new Exception(String.Format("Method {0} is not allowed to call when application is not running.", args.Method.Name));
    }
}