EDITED : 죄송 합니다만이 샘플은 작동합니다 ... 내 문제를 단순화했습니다. 문제의 원인을 찾았습니다. const 유형입니다. 샘플에서 "int"이며 실제 코드는 "short"입니다. 그렇다면 나는 왜 짧은 상수에 접근 할 수없는 가라는 질문을 다시 말해야한다. 나는 const의 타입을 바꿀 수 없다.Spring.Net ExpressionEvaluator를 사용하여 "복잡한"상수 값을 얻습니다.
개체의 속성을 내부 클래스에 정의 된 상수와 비교하려고합니다. 샘플 : 나는 spring.net의 ExpressionEvaluator에 A.B.AB_CONST을 포함하는 표현식을 평가하려고 할 때
public class A {
public const int A_CONST = 1;
public class B {
public const int AB_CONST = 1;
}
}
지금, 나는 그것을 할 수있는 방법을 모르겠어요. 나는 많은 것을 시도했지만 효과가 없었습니다.
내가 등록한 타입 A :
TypeRegistry.RegisterType(typeof(A))
내가 A_CONST
ExpressionEvaluator.GetValue(null, "A.A_CONST")
그러나 클래스 A.B와 에 액세스 할 수 있습니다, 그것은 작동하지 않습니다. 나는 '.'을 사용하여 별칭으로 유형을 등록하려고 시도했다. 및 '+'. 다른 방법으로도 액세스 할 수 있지만 절대로 효과가 없습니다.
TypeRegistry.RegisterType(typeof(A.B))
ExpressionEvaluator.GetValue(null, "A.B.AB_CONST")
ExpressionEvaluator.GetValue(null, "A+B.AB_CONST")
TypeRegistry.RegisterType("AB", typeof(A.B))
ExpressionEvaluator.GetValue(null, "AB.AB_CONST")
TypeRegistry.RegisterType("A.B", typeof(A.B))
ExpressionEvaluator.GetValue(null, "A.B.AB_CONST")
ExpressionEvaluator.GetValue(null, "A+B.AB_CONST")
어떤 아이디어가 있습니까?