我写了一个具有属性的函数。我想将一些数据传递给它的属性,它使用这些数据做一些工作。
[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)
你不能这样做,在编译时评估属性参数,你需要使用编译时常量。
答案 1 :(得分:0)
这是不可能的,因为在编译源代码之前验证了属性,因此它们无法使用运行时数据。