Как найти количество параметров в конструкторе - PullRequest
1 голос
/ 03 ноября 2008

Я пытаюсь найти способ определить, сколько параметров имеет конструктор.

Теперь я построил один конструктор без параметров и 1 конструктор с 4 параметрами.

Есть ли в C # способ узнать, сколько параметров имеет используемый или заданный конструктор?

Дело в том, что я использую третий конструктор для чтения файлов журнала. Эти файлы журналов читаются как элементы string [], и их должно быть столько, сколько имеется аргументов. Если нет, у меня поврежден файл журнала.

Но я использую много подклассов, и у каждого конструктора есть больше параметров для их определенного типа журнала.

Итак, я хотел знать: есть ли способ проверить количество параметров в конструкторе?

И да, это школьное задание. Я не знаю, какие термины действительно искать, поэтому объектный браузер VS2008 в настоящее время не очень полезен.

Ответы [ 5 ]

3 голосов
/ 03 ноября 2008

Вы должны взглянуть на пространство имен System.Reflection. Более конкретно, вы можете получить список конструкторов класса с помощью:

 System.Type.GetType("MYClassName").GetConstructors()
2 голосов
/ 03 ноября 2008

Звучит так, как будто вам нужно немного подумать над своим кодом. Из вашего описания, необходимость динамического определения количества аргументов в конструкторе звучит немного сложновато. Вы можете рассмотреть шаблон проектирования фабрики, так как тип создаваемого объекта определяется во время выполнения. Если я неправильно понимаю вашу проблему, то использование рефлексии, на которую указывают другие ответы, поможет вам.

0 голосов
/ 03 ноября 2008

Разве вы не можете создать конструктор, который берет ссылку на файл журнала (или текущую необработанную запись файла журнала), читает его и выдает ошибку, если есть какая-либо проблема?

Я пытаюсь понять, почему вам нужно посмотреть на количество элементов, которое имеет конструктор. Из того, что я видел до сих пор, кажется, что это слабый дизайн, заключающийся в том, что количество элементов в файле журнала определяет тип создаваемой публикации.

Короткий ответ на ваш ближайший вопрос - это то, что было сказано в предыдущем ответе: подумайте о конструкторе класса, который вы пытаетесь создать, и изучите его параметры.

0 голосов
/ 03 ноября 2008

Количество параметров постоянно. Я определил их, и они не меняются.

То, что происходит, - это то, что я имитирую своего рода дерево публикаций и делаю в нем деления (a.k.a. Подклассы)

Таким образом, все конструкторы моих подклассов имеют параметры или классы, от которых они наследуют.

Таким образом, длина отличается для каждого типа публикации.

У меня есть третий конструктор, на всякий случай мне нужно визуализировать свои данные публикации через чтение файла журнала.

Но я должен принять во внимание, что файл журнала может быть поврежден. Который включает в себя возможность отсутствия данных для всех моих параметров в файле журнала.

Вот почему я должен знать, как найти количество параметров в моем конструкторе: я должен проверить, сколько данных в моем журнале по сравнению с количеством параметров, которые у меня есть.

0 голосов
/ 03 ноября 2008

Я точно не знаю, в каком контексте вам нужна эта информация, но если она вам нужна динамически во время выполнения, попробуйте пространство имен System.Reflection

в противном случае выпадающий список Intellisense должен показать вам все доступные конструкторы ...

...