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

本文关键字:使用方法 数据 属性 | 更新日期: 2023-09-27 18:34:44

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

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

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

你不能这样做,属性参数是在编译时计算的,你需要使用编译时常量。

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