2017-08-03 54 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>

相關問題