EnvDTE CodeProperty - имя типа массивов равно "" - PullRequest
1 голос
/ 30 июля 2010

У меня есть следующий код для перебора некоторых свойств моего класса

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

1 Ответ

4 голосов
/ 16 августа 2010

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

 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;
        } 
...