3
總之這幾乎解釋了我的問題......我怎樣才能獲得的類型參數的數量上的開放式泛型在C#
class Foo<T> { ... }
var type = typeof(Foo<>); <-- runtime provides a RuntimeType object instance in my real code
var paramCount = ((RuntimeType)type).GetGenericParameters().Count; <-- I need this
當然,問題是,「RuntimeType」是一個內部類型(我相信)mscorlib,所以我無法從我的代碼訪問它。
是否有另一種/更好的方法來做到這一點?
更新:
我發現了一個「醜陋的,可能不安全」的方式來實現基本上是我需要的,但我相信這是一個壞主意(原因很明顯)...
var paramCount = int.Parse(type.Name.Substring(t.Name.Length-1));
這是假設很多,只是感到討厭。那說......我已經在反思世界......所以它本質上是討厭的。
當然有更好的方法來做到這一點,雖然?
@War如果你使用完整的.NET,那麼'type.GetGenericArguments()。Length;'將工作。你不需要投射。 'type'變量應該被聲明爲'Type type'。 'RuntimeType'是內部的東西,你可以忽略。 – xanatos
啊不錯..。感謝人:)只是需要拉System.reflection ...葉我認爲這是一個完整的.Net的東西只...不會工作的核心 – War