2014-12-20 16 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

這是不可能的,因爲在編譯源代碼之前驗證屬性,所以它們不能使用運行時數據。