http://docs.oracle.com/javase/tutorial/java/annotations/repeating.html
Начиная с Java8 вы можете описать повторяемые аннотации:
@Repeatable (FooValues.class) public @interface Foo {String bar (); } public @interface FooValues {Foo [] value (); }
Примечание, значение
является обязательным для списка значений.
Теперь вы можете использовать аннотации, повторяя их вместо заполнения массива: [ ! d7]
@Foo (bar = "one") @Foo (bar = "two") public void haha () {}
Вы хотите Type.GetNestedTypes . Это даст вам список типов, которые вы можете запросить для своих имен.
Да, есть. Используйте Type.GetNestedTypes()
.
Type[] nested = typeof(SomeClass).GetNestedTypes();
Type.GetNestedTypes () вернет общедоступные вложенные типы указанного типа.
Если вам также нужны частные и внутренние вложенные типы, вы должны вызвать Type.GetNestedTypes (BindingFlags bindingFlags) метод, подобный этому:
Type[] nestedTypes = typeof(MyType).GetNestedTypes(BindingFlags.Static |
BindingFlags.Instance |
BindingFlags.Public |
BindingFlags.NonPublic);
Не делает ли Type.GetNestedTypes
то, что вы хотите?
Обратите внимание, что если вы хотите получить «двойные вложенные» типы, вам нужно будет перезаписать - как Foo.Bar.Baz - это вложенный тип в Foo.Bar, а не в Foo.
Для «современных» сред (.NET 4.5, PCL, UWA и т. Д.) Вам нужно TypeInfo.DeclaredNestedTypes
, например, type.GetTypeInfo().DeclaredNestedTypes
, используя метод расширения GetTypeInfo()
.
TypeInfo
- в этом случае TypeInfo.DeclaredNestedTypes
.
– Jon Skeet
22 September 2015 в 17:12
type.GetTypeInfo().DeclaredNestedTypes
. – ErikE 20 November 2015 в 18:54