2017-08-03 30 views
0

は、この階層を考えてみましょう:派生型を渡したMono Cecilで基本型の型引数を取得する方法は?

class StrDict<T> : Dictionary<string, T> 
class MyDictionary : StrDict<double> 

私は基本型の名前でTを交換するモノセシルを使ってタイプdoubleを取得したいです。理想的には、回避策なしでStrDict `1 <double>を直接取得したいです。

私が試した:

var baseTypeDef = ((GenericInstanceType) myDictTypeRef.BaseType).ElementType.Resolve(); 
var typeParamName = baseTypeDef.GenericParameters.First().FullName 

をしかし、それはT、ないdoubleを返しました。

答えて

0

私は、次のコード(reference)を使用してこの問題を解決するために管理:必要に応じて

var genericBaseType = (GenericInstanceType) myDictTypeRef.BaseType; 
var genericArgs = genericBaseType .GenericArguments; 
var fullBaseTypedName = genericBaseType.ElementType.MakeGenericInstanceType(genericArgs.ToArray()).FullName 

StrDict `1 <double>を返します。

関連する問題