TypeBuilder.GetMethod
可以讓你獲得一個泛型類型由TypeBuilder
封閉的方法,因此讓我到以下幾點:TypeBuilder.GetMethod上TypeBuilder
TypeBuilder tb = ....
// this would throw a NotSupportedException :
// var ec = typeof(EqualityComparer<>).
// MakeGenericType(tb).GetMethod("get_Default");
// this works:
var ec = TypeBuilder.GetMethod(tb, typeof(EqualityComparer<>).
GetMethod("get_Default");
什麼不工作(我不明白如何使它的工作呢)是這樣的:
Type collectionOf = typeof(ICollection<>).MakeGenericType(tb);
// throws: 'Type must be a type provided by the runtime.
// Parameter name: types'
var colEc = TypeBuilder.GetMethod(collectionOf, typeof(EqualityComparer<>).
GetMethod("get_Default");
// throws NotSupportedException
colEc = typeof(EqualityComparer<>).MakeGenericType(collectionOf).
GetMethod("get_Default");
任何人都知道答案(我希望它是42)...?
不,TypeBuilder.GetMethod說這個類型必須是一個類型建造者類型。 – Jeff 2011-01-19 20:14:26