【问题标题】:Use Methods Data in It's Attribute class在它的属性类中使用方法数据
【发布时间】:2014-12-20 09:34:09
【问题描述】:

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

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

【问题讨论】:

    标签: c# class methods attributes


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-24
        • 1970-01-01
        • 2011-07-23
        • 1970-01-01
        • 1970-01-01
        • 2021-02-20
        • 2017-03-03
        • 1970-01-01
        相关资源
        最近更新 更多