private ITypeParent OnGetParentImpl() { ITypeParent declParent = this.Original.Parent; if (declParent == null) { return(null); } else { if (this.Original.IsGenericConstruct) { if (declParent is IGenericType) { IGenericType genericParent = ((IGenericType)(declParent)); if (genericParent.IsGenericConstruct) { if (!genericParent.IsGenericDefinition) { genericParent = (IGenericType)genericParent.ElementType; } return((ITypeParent)genericParent.MakeGenericClosure(this.GenericParameters.Take(genericParent.GenericParameters.Count).ToCollection())); } else { return((ITypeParent)genericParent); } } else if (declParent is IMethodMember) { IMethodMember genericParent = ((IMethodMember)(declParent)); if (genericParent.IsGenericConstruct) { if (!genericParent.IsGenericDefinition) { genericParent = (IMethodMember)genericParent.GetGenericDefinition(); } return((ITypeParent)genericParent.MakeGenericClosure(this.GenericParameters.Take(genericParent.GenericParameters.Count).ToCollection())); } } } return(declParent); } }
private ITypeParent OnGetParentImpl() { ITypeParent declType = this.Original.Parent; if (declType == null) return null; else { if (this.Original.IsGenericConstruct && declType is IGenericType) { IGenericType genericParent = ((IGenericType)(declType)); if (genericParent.IsGenericConstruct) { if (!genericParent.IsGenericDefinition) genericParent = (IGenericType)genericParent.ElementType; return (ITypeParent)genericParent.MakeGenericClosure(this.GenericParameters.Take(genericParent.GenericParameters.Count).ToCollection()); } else return (ITypeParent)genericParent; } else return declType; } }