/// <summary> /// Convert a type from the debugger's type system into X# type system /// </summary> /// <param name="lmrType">LMR Type</param> /// <returns>X# type</returns> public static XSharpType GetXSharpTypeForLmrType(Type lmrType) { if (lmrType.IsPrimitive) { return(XSharpType.Create(lmrType.FullName)); } else if (lmrType.IsArray) { XSharpType elementType = GetXSharpTypeForLmrType(lmrType.GetElementType()); return(elementType.MakeArrayType()); } else if (lmrType.IsByRef) { XSharpType elementType = GetXSharpTypeForLmrType(lmrType.GetElementType()); return(elementType.MakeByRefType()); } else if (lmrType.IsGenericType) { var args = lmrType.GetGenericArguments(); var td = lmrType.GetGenericTypeDefinition(); return(XSharpType.Create(td, args)); } else if (lmrType.FullName.Equals("System.String")) { return(XSharpType.String); } // Unknown return(XSharpType.Create(lmrType.FullName)); }
internal TypeVariablesExpansion(Type declaredType) { Debug.Assert(declaredType.IsGenericType); Debug.Assert(!declaredType.IsGenericTypeDefinition); var typeDef = declaredType.GetGenericTypeDefinition(); _typeParameters = typeDef.GetGenericArguments(); _typeArguments = declaredType.GetGenericArguments(); Debug.Assert(_typeParameters.Length == _typeArguments.Length); Debug.Assert(Array.TrueForAll(_typeParameters, t => t.IsGenericParameter)); Debug.Assert(Array.TrueForAll(_typeArguments, t => !t.IsGenericParameter)); }
internal TypeVariablesExpansion(Type declaredType) { Debug.Assert(declaredType.IsGenericType); Debug.Assert(!declaredType.IsGenericTypeDefinition); var typeDef = declaredType.GetGenericTypeDefinition(); _typeParameters = typeDef.GetGenericArguments(); _typeArguments = declaredType.GetGenericArguments(); Debug.Assert(_typeParameters.Length == _typeArguments.Length); Debug.Assert(Array.TrueForAll(_typeParameters, t => t.IsGenericParameter)); Debug.Assert(Array.TrueForAll(_typeArguments, t => !t.IsGenericParameter)); }
private DkmClrObjectFavoritesInfo GetObjectFavoritesInfo(Type type) { DkmClrObjectFavoritesInfo favorites = null; if (_favoritesByTypeName != null) { if (type.IsGenericType) { type = type.GetGenericTypeDefinition(); } _favoritesByTypeName.TryGetValue(type.FullName, out favorites); } return(favorites); }