Я не знаю любого языка , где подклассы наследуют конструкторы (но тогда я не много программируемый полиглотт).
Здесь обсуждается тот же вопрос относительно C #. Общий консенсус, по-видимому, заключается в том, что он усложнит язык, представит потенциал для неприятных побочных эффектов для изменений в базовом классе и вообще не будет нужен в хорошем дизайне.
Привет Кент, если вы посмотрите на экспорт, там есть метаданные под названием "ExportType", это должен быть селектор для пользовательского exportprovider. Но после публикации здесь я нашел сообщение в блоге Глена Блока. Так что для моей специальной цели я должен сделать следующее:
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new DirectoryCatalog(AppDomain.CurrentDomain.BaseDirectory));
var defaults = new CatalogExportProvider(new TypeCatalog(typeof(Service2)));
var container = new CompositionContainer(catalog, defaults);
defaults.SourceProvider = container;
Тем не менее, было бы неплохо узнать, как я могу написать пользовательский exportprovider, который выбирает нужный экспорт из метаданных. Моя проблема в том, как выбрать нужную информацию из ImportDefnition и как я могу установить новый Export(...) в GetExportsCore().
В этой статье журнала MSDN объясняется, как получать и использовать метаданные экспорта. По сути, вы используете метод GetExports () в CompositionContainer для получения типов и метаданных, которые затем позволяют вам выбирать тип на основе значений метаданных.