Как передать динамические типы данных в качестве параметров в C #? - PullRequest
2 голосов
/ 24 июня 2011

У меня есть метод в c #, который создает xml на лету.

Однако я не буду знать конкретные элементы / атрибуты до времени выполнения.

Как мне объявить параметрыкогда я не знаю, какими будут типы данных, имена, значения или количество?

Ответы [ 3 ]

2 голосов
/ 24 июня 2011

Вы ищете ключевое слово params . Или вы? :)

1 голос
/ 24 июня 2011

Вы можете использовать System.Object для всех параметров, так как это базовый класс для всех других типов.Затем вы можете узнать фактический объявленный тип с помощью метода GetType() и обработать значение соответствующим образом.

например

if (myParam.GetType() == typeof(Int32)) 
{
   // treat value as integer ...
   int val = (int)myParam;
}

или вы можете использовать синтаксис

if (myParam is Int32)
{
   // treat value as integer ...
   int val = (int)myParam;
}
else if (myParam is String)
{
   string val = myParam.ToString();
}

и т.д.

0 голосов
/ 24 июня 2011

Другой вариант - использовать дженерики.Это будет полезно, если вам нужно наложить ограничения на типы, которые могут быть переданы в:

public void BuildXml<T>(T obj)
{
    // do work
}

или если вы ожидаете коллекцию объектов:

public void BuildXml<T>(IEnumerable<T> items)
{
    // do work
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...