2010-07-30 2 views
1

У меня есть следующий код, чтобы перебирать некоторые свойства моего классаEnvDTE CodeProperty - TypeName массивов является «»

IEnumerable<CodeProperty> properties = CodeParser.GetEntityProjectItem(this, EntityClassType.Entity).FileCodeModel.GetClassesByName(method.EntityPropertyClassName).First().GetIEnumerable<CodeProperty>().Where(property => property.Getter != null && property.Access == vsCMAccess.vsCMAccessPublic); 

Это все хорошо, я получаю свои свойства, следующий я создать пользовательский класс с именем и типами свойств, это снова отлично от массивов.

для струнной собственности я получаю имя и «System.String»

для строки [] Свойство я получаю имя и «»

Как я могу получить тип массива с помощью CodeProperty

ответ

4

Я закончил использовать этот метод расширения, чтобы заставить меня снова работать

public static string GetFullName(this CodeTypeRef codeType) 
     { 
      string fullName; 

      if (codeType.TypeKind == vsCMTypeRef.vsCMTypeRefArray) 
      { 
       CodeTypeRef arrayType = codeType.ElementType; 
       fullName = arrayType.AsFullName + "[]"; 
      } 
      else 
      { 
       fullName = codeType.AsFullName; 
      } 
      return fullName; 
     } 
Смежные вопросы