При назначении перегруженного метода в C# без указания параметров, как определить, какой из них используется - PullRequest
0 голосов
/ 12 марта 2020

У меня есть свойство

public Func<string, SomeDataTable> GetContactFromAlias { get; set; }

, которое я хочу передать / использовать откуда-то еще, и несколько перегруженных функций

public SomeDataTable GetContact(string alias);
public SomeDataTable GetContact(string something, string other);
public SomeDataRow GetContact(Guid id);

. C# автоматически определяет правильную версию функции с учетом указанных параметров? В моем случае это работает, но мне интересно, поскольку обычно левая часть задания (насколько мне известно) не учитывается.

GetContactFromAlias = SomeClass.GetContact;

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

GetContactFromAlias = (alias) => SomeClass.GetContact(alias);

, но это не так легко прочитать. Тем не менее, следует ли мне использовать последнюю версию, если компилятор решит по-разному относиться к присваиванию, и оно сломается? Или работает какой-то умный механизм, который выбирает правильную перегрузку?

...