2014-12-20 17 views
0

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

[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 
    } 
} 

回答

0

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

0

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