void InitParameters() { parameters = new List <IType>(); foreach (var i in def.Parameters) { IType type = null; bool isByRef = false; bool isArray = false; TypeReference pt = i.ParameterType; if (i.ParameterType.IsByReference) { isByRef = true; pt = pt.GetElementType(); } if (i.ParameterType.IsArray) { isArray = true; pt = pt.GetElementType(); } if (pt.IsGenericParameter) { type = FindGenericArgument(pt.Name); if (type == null && def.HasGenericParameters) { bool found = false; foreach (var j in def.GenericParameters) { if (j.Name == pt.Name) { found = true; break; } } if (found) { type = new ILGenericParameterType(pt.Name); } else { throw new NotSupportedException("Cannot find Generic Parameter " + pt.Name + " in " + def.FullName); } } if (isByRef) { type = type.MakeByRefType(); } if (isArray) { type = type.MakeArrayType(); } } else { type = appdomain.GetType(i.ParameterType, declaringType, this); } parameters.Add(type); } }
void InitParameters() { parameters = new List <IType>(); foreach (var i in param) { IType type = appdomain.GetType(i.ParameterType.FullName); if (type == null) { type = appdomain.GetType(i.ParameterType.AssemblyQualifiedName); } if (i.ParameterType.IsGenericTypeDefinition) { if (type == null) { type = appdomain.GetType(i.ParameterType.GetGenericTypeDefinition().FullName); } if (type == null) { type = appdomain.GetType(i.ParameterType.GetGenericTypeDefinition().AssemblyQualifiedName); } } if (i.ParameterType.ContainsGenericParameters) { var t = i.ParameterType; if (t.HasElementType) { t = i.ParameterType.GetElementType(); } else if (t.GetGenericArguments().Length > 0) { t = t.GetGenericArguments()[0]; } type = new ILGenericParameterType(t.Name); } if (type == null) { throw new TypeLoadException(); } parameters.Add(type); } if (def != null) { if (def.IsGenericMethod && !def.IsGenericMethodDefinition) { appdomain.RedirectMap.TryGetValue(def.GetGenericMethodDefinition(), out redirect); } else { appdomain.RedirectMap.TryGetValue(def, out redirect); } } }
void InitParameters() { parameters = new List <IType>(); foreach (var i in ParametersCLR) { IType type = appdomain.GetType(i.ParameterType.FullName); if (type == null) { type = appdomain.GetType(i.ParameterType.AssemblyQualifiedName); } if (i.ParameterType.IsGenericTypeDefinition) { if (type == null) { type = appdomain.GetType(i.ParameterType.GetGenericTypeDefinition().FullName); } if (type == null) { type = appdomain.GetType(i.ParameterType.GetGenericTypeDefinition().AssemblyQualifiedName); } } if (i.ParameterType.ContainsGenericParameters) { var t = i.ParameterType; if (t.HasElementType) { t = i.ParameterType.GetElementType(); } else if (t.GetGenericArguments().Length > 0) { t = t.GetGenericArguments()[0]; } type = new ILGenericParameterType(t.Name); } if (type == null) { throw new TypeLoadException(); } parameters.Add(type); } }
void InitParameters() { parameters = new List <IType>(); foreach (var i in def.Parameters) { IType type = null; if (i.ParameterType.IsGenericParameter) { type = FindGenericArgument(i.ParameterType.Name); if (type == null && def.HasGenericParameters) { bool found = false; foreach (var j in def.GenericParameters) { if (j.Name == i.ParameterType.Name) { found = true; break; } } if (found) { type = new ILGenericParameterType(i.ParameterType.Name); } else { throw new NotSupportedException("Cannot find Generic Parameter " + i.ParameterType.Name + " in " + def.FullName); } } } else { type = appdomain.GetType(i.ParameterType, declaringType); } parameters.Add(type); } }