Интерфейс реализации анонимного класса [дубликат]

14
задан James McNellis 14 June 2010 в 13:36
поделиться

2 ответа

Нет, это невозможно.

Анонимный тип предназначен для внутреннего использования как легкий транспортный объект. В тот момент, когда вам потребуется больше функциональных возможностей, чем предоставляет небольшой синтаксис, вы должны реализовать его как обычный именованный тип.

Такие вещи, как наследование и реализации интерфейса, атрибуты, методы, свойства с кодом и т. Д. Невозможно.

12
ответ дан 1 December 2019 в 11:59
поделиться

Даже если бы вы могли это сделать, вы почти наверняка не захотели бы этого, поскольку метод знал бы все об анонимном классе (то есть нет инкапсуляции, а также не дает никакого преимущества в доступе к вещам косвенно).

С другой стороны, я подумал о том, как такая функция может выглядеть (потенциально полезной, если я хочу передать анонимно типизированный объект методу, ожидающему определенный интерфейс ... или я так думал).

Самым минимальным синтаксисом для анонимного типа, наследующего интерфейс IFoo, будет что-то вроде

new {IFoo.Bar = 2} // if IFoo.Bar is a property

or

new {IFoo.Bar() = () => do stuff} if IFoo.Bar is a method

Но это простой случай, когда IFoo имеет только одно свойство или метод. Как правило, вам придется реализовать все членов IFoo; включая свойства и события чтения / записи, что в настоящее время невозможно даже для анонимно типизированных объектов.

1
ответ дан 1 December 2019 в 11:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: