Впервые я расскажу вам, что мне нужно сделать, потому что я думаю, что это не «нормальная» проблема, а довольно конкретная.Получение атрибутов класса
У меня есть класс Words
, который определяет 16 пунктов. Этот класс используется в моем общем классе OldParser
, потому что он определяет каждый атрибут. Вот один из моих классов выглядит с атрибутами типа Words.
class MyClass: OldParser
{
public Words[] arg1 = new Words[2];
public Words[] arg2 = new Words[5];
public Words arg3;
}
Тогда у меня есть массив слов, который содержит то, что мне нужно для создания моего класса. Итак, первые два слова пойдут на arg1. 5 других - arg2, а последний - arg3. И, конечно, мне нужно, чтобы он был общим для каждого класса, который у меня есть, поэтому он должен быть общим.
Итак, вот мой вопрос: как я могу получить список всех атрибутов моего класса? А потом, как узнать размер массива?
Например, для этого класса мне нужно получить все атрибуты и знать, что мой первый атрибут - это массив из 2, второй - массив из 5, а мои последние атрибуты - это не массив.
я использовал:
List<System.Reflection.FieldInfo> list = typeof(MyClass)
.GetFields(BindingFlags.Instance|BindingFlags.NonPublic|BindingFlags.Public)
.ToList();
Для того, чтобы получить свои атрибуты класса. Но я не знаю, как получить размер массивов, а также, я не уверен, что я делаю это правильно.
Пожалуйста, смотрите [ «Должны ли вопросы включают„метки“в их названиях?»] (HTTP://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles), где консенсус «нет, они не должны»! –
Меня беспокоит использование термина * Атрибут *, который более связан с https://msdn.microsoft.com/en-us/library/z0w1kczw.aspx - вы имеете в виду флаги? ... пожалуйста, дополните! –
Я смущен тем, что это за слова. Вы говорите: «первые два слова пойдут на arg1», но я не знаю, откуда эти слова? Вы просто получаете список из 6 слов, переданных в конструктор для этого объекта или что-то еще? – Chris