Intereting Posts
как вызвать мою dll и использовать ее в скрипте powershell Как я могу безопасно хранить и получать сведения о строках подключения? Как заменить указатель на указатель на метод в classе моего метода, унаследованного от системного classа? Невозможно выполнить привязку времени выполнения по нулевой ссылке – Пустые ячейки Excel EF 4 создает строковые константы UNICODE в SQL, где тип столбца – varchar. Как избежать? Lync UCMA SDK Server – глобально подписаться на обновления присутствия для всех презентаций Сохранение файлов Word DOCX в формате PDF Как прервать сокет BeginReceive ()? Любой способ дифференцировать Отмена и Тайм-аут Как использовать XAML / WPF в PowerShell, как мне заполнить список? Параллельная линия с использованием библиотеки Clipper Преобразуйте этот делегат в анонимный метод или lambda Android эквивалентен Deployment.Current.Dispatcher.BeginInvoke для телефона Windows? Почему элементы управления winform работают самостоятельно, когда я сохраняю форму Как очистить отслеживаемые объекты в инфраструктуре сущности

Интерфейс – реализация анонимного classа в C #?

Есть ли конструкция в C #, которая позволяет вам создать анонимный class, реализующий интерфейс, как в Java?

    Как уже было сказано, нет, это невозможно. Однако вы можете создать class, который реализует желаемый интерфейс и принимает lambda в его конструкторе, чтобы вы могли превратить lambda в class, реализующий интерфейс. Пример:

    public class LambdaComparer : IEqualityComparer { private readonly Func _lambdaComparer; private readonly Func _lambdaHash; public LambdaComparer(Func lambdaComparer) : this(lambdaComparer, EqualityComparer.Default.GetHashCode) { } public LambdaComparer(Func lambdaComparer, Func lambdaHash) { if (lambdaComparer == null) throw new ArgumentNullException("lambdaComparer"); if (lambdaHash == null) throw new ArgumentNullException("lambdaHash"); _lambdaComparer = lambdaComparer; _lambdaHash = lambdaHash; } public bool Equals(T x, T y) { return _lambdaComparer(x, y); } public int GetHashCode(T obj) { return _lambdaHash(obj); } } 

    Использование (очевидно, ничего полезного, но вы получаете идею)

     var list = new List() { "a", "c", "a", "F", "A" }; list.Distinct(new LambdaComparer((a,b) => a == b)); 

    Нет. C # не поддерживает анонимные classы (за исключением анонимных типов, которые не могут определять методы).

    Нет, Lambda Expression не может реализовать никаких дополнительных интерфейсов, чем это уже делает.

    Вы также сравниваете неправильные вещи. Я предполагаю, что вы действительно хотели спросить, могут ли анонимные типы в C # реализовать интерфейсы. Ответ на это тоже нет.