다음과 같이 내가 쓴 확장은 다음과 같습니다C#에서 동적으로 생성 유형에 대한 일반적인 확장 메서드를 호출하는 방법을
public static IEnumerable<T> Traverse<T>(this IEnumerable<T> source, Func<T, bool> predicate) where T : class, new()
{
....
}
동적 반사하는 TypeBuilder를 사용하여 생성하면 다음과 같은 화면이 나타납니다 클래스 샘플.
public class Sample
{
public Sample()
{
Children= new ObservableTestCollection<Sample>(this);
}
public Sample(IEnumerable<Sample> source)
{
Children= new ObservableTestCollection<Sample>(this, source);
}
public ObservableTestCollection<Sample> Children;
}
ObservableTestCollection 위 여기 아래에 반사하는 TypeBuilder가 내장되어 ObservableCollection에
하는 TypeBuilder하여 산출 : 목적은 내가 시간을 실행 만든 인스턴스화 은 같다. 내가하고 싶은 무엇 입니다 : 여기
var type = typeBuilder.CreateType();
var obj = Activator.CreateInstance(type);
var results = (IEnumerable<...>)(obj.GetProperty("Children").GetValue(obj)).Traverse(s=>s!=null);
문제는 샘플의 종류가 반사하는 TypeBuilder에 의해 생성 된 하나이기 때문에 내가 IEnumerable을 캐스팅 할 수 없다는 것입니다. 즉, 코드에서 Sample에 대한 명확한 유형이 없음을 의미합니다.
그래서 일반 유형 IEnumerable<...>
을 전송하거나 Traverse의 확장 메소드를 호출하는 방법을 찾고 싶습니다.
미리 감사드립니다.
무엇이 질문입니까? – qxg