Я часто нахожу довольно отвлекающим фактором, чтобы реализовать интерфейс только потому, что он мне нужен один раз для вызова метода. Я должен создать класс где-то еще, реализовать интерфейс и т.д. И т.д.
В Java есть функция под названием Анонимные классы, которая позволяет реализовать интерфейс "inline". Таким образом, мой вопрос: каким образом вы можете придумать что-то подобное в С#, используя существующий синтаксис (и я понимаю, что "самый приятный" субъективен). Я ищу хороший синтаксис, не обязательно производительность.
Я реализовал следующее как POC в С#:
Учитывая
interface IFoobar
{
Boolean Foobar(String s);
}
IFoobar foo = Implement.Interface<IFoobar>(new {
Foobar = new Func<String, Boolean>(s => s == "foobar")
});
В этом случае используется анонимный объект и некоторое отражение/излучение для реализации интерфейса IFoobar
(с учетом свойств, общих методов и перегрузки). Но я не поклонник материала new Func<...>
, но не могу обойтись без него.
Оглядываясь назад, я заметил библиотеку под названием Интерфейс Impromptu, но не был впечатлен ее синтаксисом для поддержки методов.
Есть ли более приятный способ?
Изменить. Я не ищу войн пламени Java vs С#.