在其属性类中使用方法数据

时间:2014-12-20 09:34:09

标签: c# class methods attributes

我写了一个具有属性的函数。我想将一些数据传递给它的属性,它使用这些数据做一些工作。

[System.AttributeUsage(System.AttributeTargets.Method)]
public class CheckXAttribute : Attribute
{
    public CheckXAttribute(int data1, bool data2, byte[] data3)
    {
        someWork(data1, data2, data3);
    }
}

其中一些数据是在编码时间中指定的。但其中一个将在运行时指定。我想将此数据传递给我的方法,然后在方法的属性中使用这些数据。

[CheckX(5, true, data3)]
void myMethod(byte[] data3){
    // Some Work
}

...

byte[] data = ...;
myMethod(data);

有可能吗?还是有其他方法可以达到我的目标???

或...... 有没有办法将数据发送到包含myMethod的类,然后在方法的属性中使用这些数据?像这样。

byte[] data = ...;
MyClass myClass = new MyClass(data);
myClass.myMethod();

...

class MyClass {
    public byte[] savedData;
    public MyClass(data)
    {
        this.savedData = data;
    }

    [CheckX(5, true, savedData)]
    void myMethod(){
        // Some Work
    }
}

2 个答案:

答案 0 :(得分:0)

你不能这样做,在编译时评估属性参数,你需要使用编译时常量。

答案 1 :(得分:0)

这是不可能的,因为在编译源代码之前验证了属性,因此它们无法使用运行时数据。