정의 된 유형을 선택하는 쿼리가 있다고 가정 해보십시오.
public class SomeObject
{
public DateTime CreatedDate { get; set; }
}
private class MyType
{
internal SomeObject Object1 { get; set; }
internal SomeThing Object2 { get; set; }
internal DateTime SomeDate { get; set; }
}
var query = from bla in context.Melp join .....
select new MyType()
{
Object1 = something,
Object2 = somethingelse,
SomeDate = bla.date
}
이제 동적 사용자 정의를 추가하고 결과 집합을 다음과 같이 정렬하는 DynamicLinq가 있습니다.
query.OrderBy("SomeDate");
또는
query.OrderBy("Object1.CreatedDate");
그러나 "SomeDate"또는 "Object1.CreatedDate"와 같이 주문하려고하면 예외 메시지가 표시됩니다.
'MyType'유형에 'SomeDate'속성 또는 필드가 없습니다.
이제 메소드 구문의 순서를 쿼리에 추가하면 다음과 같습니다.
query = query.OrderBy(x => x.SomeDate)
또는
query = query.OrderBy(x => x.Object1.CreatedDate)
모든 것이 작동하므로 DynamicLinq의 버그 일 수도 있고 잘못 생각하고 있습니다 ...
어떤 아이디어?
Dynamic Linq는 Reflection을 많이 사용합니다. 속성이 internal
로 표시되고 BindingFlags
가 적용되지 않으면 <Type>.GetProperty
메서드 (Dynamic Linq 라이브러리에서 사용) 메서드가 internal
속성을 감시하지 않기 때문에 문제가 될 수 있습니다.
그들에게 공개하고 수업에 표시를 해보십시오.