Vous pourriez peut-être exporter une sorte de pièce de configuration avec votre pièce de transport.
Disons que votre application hôte définit une interface:
public interface IDataTransporterSettings
{
// any common settings are defined here
}
... et suppose que tout IDataTrasporter possède une propriété publique de ce type:
public interface IDataTransporter
{
IDataTransporterSettings Settings { get; }
}
... alors vos paramètres » "pourrait être une classe avec un groupe de propriétés publiques correspondant à chacun des paramètres:
public class TcpDataTransporterSettings : IDataTransporterSettings
{
public string Address { get; set; }
public int Port { get; set; }
}
Votre classe TcpDataTransporter, donc, lirait toujours à partir de sa propriété Settings pour déterminer son adresse/port/quoi que ce soit.
Maintenant, votre application hôte peut utiliser la réflexion pour inspecter les paramètres de chacune de ses parties importées et afficher un contrôle approprié pour chaque propriété publique (un TextBox pour les chaînes, un NumericUpDown pour ints etc.).
Je suppose qu'avec un peu de travail, vous pouvez ajouter des descriptions lisibles par l'homme à chaque propriété via les attributs, afin que vous puissiez définir l'étiquette de chaque contrôle dans l'interface utilisateur.
Je n'ai pas entièrement réfléchi à cela, et je ne l'ai certainement pas implémenté nulle part, mais il semble que ce pourrait être un moyen de fournir des paramètres flexibles pour chaque pièce importée.
Cela semble être une bonne idée, ne sera pas encore la réponse, mais je pourrais le faire. Ce que j'ai maintenant est un Dictionary dans le cadre de l'interface IDataTransporter. Je vais regarder dans cette solution aussi. Je me demande si les assemblys peuvent avoir leur propre fichier de configuration .xml .... –
TimothyP