일반 메서드 TResult Foo<TSource, TResult>(IEnumerable<TSource> source)
이 있고 TResult
이 dynamic
으로 선언 된 경우 다른 형식 선언과 다른 코드 경로를 실행하려고합니다.유형 (동적)을 어떻게 테스트합니까?
if (typeof(TResult) == typeof(int))
return ExpressionFactory.CreateExpandoFunction<TSource, TResult>();
그러나 if (typeof(TResult) == typeof(dynamic))
컴파일되지 않습니다 : 당신이 좋아하는 물건을 할 수있는 일반적인 유형의
. 동적 자체가 내가를 테스트해야 어떤 종류가 아닌
dyanmic x = Foo<int, dynamic>(list);
이후 :
은 메소드가 선언으로 호출 될 때 런타임에 결정의 종류를 만들기 위해 어쨌든 있나요? IDynamicMetaObjectProvider
?
편집 이것은 System.Linq.Expression 평가자에 대한 SQL 텍스트의 일부입니다. 단순히 당신이 할 수없는 동적으로 형태가 없기 때문에 말하기
if (type is struct)
create selector that initializes each element to result values
else if (type is class)
create selector that initialize each element to new instance and set member properties
else if (type is dynamic)
create selector that initializes each element to new `ExpandoObject` and populates/sets member properties
이 정보가 필요하십니까? – Gishu