147
147
var baseTypeDef = baseType.GetDefinition();
148
148
if (baseTypeDef != null && baseTypeDef.Name == "IEnumerable") {
149
149
if (baseTypeDef.Namespace == "System.Collections.Generic" && baseTypeDef.TypeParameterCount == 1) {
150
var pt = baseType as ParameterizedType;
152
return pt.TypeArguments[0];
150
if (baseType.TypeArguments.Count > 0)
151
return baseType.TypeArguments[0];
154
152
} else if (baseTypeDef.Namespace == "System.Collections" && baseTypeDef.TypeParameterCount == 0) {
155
153
return CurrentContext.Compilation.FindType (KnownTypeCode.Object);
254
252
member = name.Substring (idx);
255
253
name = name.Substring (0, idx);
258
var type = CurrentContext.Compilation.LookupType (ns, name);
256
var type = new GetClassTypeReference (ns, name, 0).Resolve (new SimpleTypeResolveContext (CurrentContext.Document.Compilation.MainAssembly));
257
bool stripAttribute = false;
258
if (type == null || type.Kind == TypeKind.Unknown) {
259
type = new GetClassTypeReference (ns, name + "Attribute", 0).Resolve (
260
new SimpleTypeResolveContext (CurrentContext.Document.Compilation.MainAssembly)
262
stripAttribute = true;
259
264
if (type == null || type.Kind == TypeKind.Unknown)
265
return fullTypeName.Replace ("#", ".");
261
266
var generator = CodeGenerator.CreateGenerator (CurrentContext.Document);
262
if (generator != null)
263
return generator.GetShortTypeString (CurrentContext.Document, type) + member;
267
if (generator != null) {
268
var result = generator.GetShortTypeString (CurrentContext.Document, type) + member;
269
if (stripAttribute && result.EndsWith ("Attribute", StringComparison.Ordinal))
270
result = result.Substring (0, result.Length - "Attribute".Length);
273
return fullTypeName.Replace ("#", ".");
267
276
static Regex functionRegEx = new Regex ("([^(]*)\\(([^(]*)\\)", RegexOptions.Compiled);