C #: выражение общего метода с неизвестной подписью - PullRequest
0 голосов
/ 24 апреля 2019

Например, у нас есть универсальный метод

public void Test<T>(T param, Action<T> callback)
{

}

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

Например:

// here 'int' detected
Test(1, (intVariable) =>
{

});

// here 'string' detected
Test("hello", (stringVariable) =>
{

});

Есть ли способ сделать то же самое с методами.Например,

Test(int.Parse, (parseMethod) =>
{
    parseMethod("11");
});

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

1 Ответ

0 голосов
/ 24 апреля 2019

Вы должны явно привести к Func<string, int>, чтобы сделать эту работу:

Test((Func<string, int>)int.Parse, (parseMethod) =>
{
    parseMethod("11");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...