Автоматически преобразовывать параметры в известный тип - PullRequest
0 голосов
/ 23 июня 2011

У меня есть метод, который принимает переменное число строковых параметров.Проблема заключается в том, что параметры берут начало как различные типы.Это означает, что я обязан явно преобразовывать все типы в строки (с помощью Convert), когда я передаю их методу.Возможно ли, чтобы метод делал это неявно, автоматически преобразовывая параметры, независимо от типа, в строки?

Ответы [ 4 ]

1 голос
/ 23 июня 2011
public string MyFunction(params object[] someobjects)
{
     var asstrings = someobjects.Select(o => (o??"").ToString());
     // for example
     return string.Join(", ", asstrings.ToArray());
}

Для .NET 4.0 вы также можете сбросить вызов .ToArray()

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

Если вы можете изменить метод, я бы рекомендовал передавать массив объектов, а не строк. А затем выполните преобразование строки внутри.

public void MyMethod(param object[] objs)
{
    String[] strings = objs.Select(o=>o.ToString()).ToArray();

    // work with strings here
}

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

public static void MyMethod(param object[] objs)
{
    String[] strings = objs.Select(o=>o.ToString()).ToArray();

    MyStaticObject.MyMethod(strings);
}

Или, если это метод экземпляра, вы можете вместо этого создать метод Extesion.

public static void MyMethod(this MyObject t, param object[] objs)
{
    String[] strings = objs.Select(o=>o.ToString()).ToArray();

    t.MyMethod(strings);
}
0 голосов
/ 23 июня 2011

Вы можете использовать массив объектов вместо массива строк. это то место, где оно подходит.

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

самый простой способ:

string.Format("{0}", param);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...