Как передать метод для разных целей?C#

Место общения программистов C#
Ответить
Anonymous
 Как передать метод для разных целей?

Сообщение Anonymous »

Я думал, что это может быть достаточно просто, но кажется, что это не так (возможно, мне нужно этому научиться)
Вот код, который я использую в качестве расширения для одного из моих типы

Код: Выделить всё

public static IMySpecialClass[]? MyMultipleFunction(this string[]? values, float line)
{
    if (values == null) return null;

    List listClass = [];

    foreach (var v in values)
    {
        listClass.Add(v.XXXX(line));
    }

    return [.. listClass];
}
У меня есть этот метод, но все, что я хочу сделать, это изменить или передать метод, который вызывается в цикле foreach

Код: Выделить всё

listClass.Add(v.XXXX(line));
XXXX — это метод, который я хочу изменить в зависимости от того, какую функцию я хочу выполнить.
XXXX — это строка IMySpecialClass введите void, поэтому я не могу найти способ передать или указать, какую функцию я хочу использовать, в зависимости от моих требований?
Я знаю, что могу скопировать и вставить код, измените метод XXXX и назовите функцию по-другому, но есть ли способ добиться этого без копирования/вставки?
Я читал о динамических типах, но чувствую, что мне нужен пример, чтобы восполните некоторые недостающие знания, так что было бы здорово, если бы кто-нибудь мог показать, как этого можно достичь (если возможно), и, возможно, какую-нибудь ссылку, к которой я мог бы обратиться на более позднем этапе?
Изменить
Текущий код после добавления действия в подпись

Код: Выделить всё

public static IMySpecialClass[]? MyMultipleFunction(this string[]? values, float line, Func func)
{
if (values == null) return null;

List listClass = [];

foreach (var v in values)
{
listClass.Add(func(v.XXXX(line)));
}

return [.. listClass];
}
В настоящее время возвращает ошибку.
Не указан аргумент, соответствующий обязательному параметру «arg2» из «Action'
Если я удалю параметр с плавающей запятой
Аргумент 1: невозможно преобразовать из 'IMySpecialClass' в 'string '

Подробнее здесь: https://stackoverflow.com/questions/790 ... t-purposes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»