Возможно, вы могли бы экспортировать какую-то часть конфигурации вместе с вашей частью транспортера.
Допустим, ваше хост-приложение определяет интерфейс:
public interface IDataTransporterSettings
{
// any common settings are defined here
}
... и предполагает, что любой IDataTrasporter имеет открытое свойство этого типа:
public interface IDataTransporter
{
IDataTransporterSettings Settings { get; }
}
... тогда ваши «настройки» могут быть классом с набором открытых свойств, соответствующих каждому из параметров:
public class TcpDataTransporterSettings : IDataTransporterSettings
{
public string Address { get; set; }
public int Port { get; set; }
}
Ваш класс TcpDataTransporter всегда будет считывать из своего свойства Settings, чтобы определить его адрес / порт / что угодно.
Теперь ваше хост-приложение может использовать отражение для проверки настроек каждой импортированной части транспортера и отображения соответствующего элемента управления для каждого открытого настраиваемого свойства (TextBox для строк, NumericUpDown для целых и т. Д.).
Думаю, немного поработав, вы могли бы добавить понятные человеку описания к каждому свойству через атрибуты, чтобы вы могли определить метку для каждого элемента управления в пользовательском интерфейсе.
Я не до конца продумал это, и, конечно, я его нигде не реализовал, но, похоже, это может быть способом обеспечить гибкие настройки для каждой импортируемой детали.