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

속성은 소스 코드를 컴파일하기 전에 확인되어 런타임 데이터를 사용할 수 없으므로 불가능합니다.