c#属性问题

Pet*_*ter 1 c# oop attributes design-patterns

嗯,我需要一些帮助,我不知道如何解决这个问题.

属性的功能是确定函数是否可以运行...

所以我需要的是以下内容:

  1. 属性的使用者应该能够确定它是否可以执行.
  2. 属性的所有者应该能够告诉消费者现在它可以/不能被执行(如事件).
  3. 它必须具有简单的语法.

这是我到目前为止,但它只实现了第1,3点.

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class ExecuteMethodAttribute : Attribute
{
    private Func<object, bool> canExecute;
    public Func<object, bool> CanExecute
    {
        get
        {
            return canExecute;
        }
    }


    public ExecuteMethodAttribute()
    {

    }

    public ExecuteMethodAttribute(Func<object, bool> canExecute)
    {
        this.canExecute = canExecute;
    }
}
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 5

属性不适用于此类目的.您使用属性装饰Type,而不是特定实例.

如果您需要一种方法来向消费者指定特定方法已准备好执行或无法执行,我会重新考虑您的设计.而不是使用属性,也许制作自定义类可以更恰当地工作.

根据您的设计,我建议您查看ICommand界面.这基本上完全符合您的要求.它使用"CanExecute"方法将委托封装到类中,并使用事件通知"使用者"执行可用性已更改.这将是一个更合适的选择.