3

例如,我们有一个接口,该接口将由负责跨网络或 COM 端口的数据传输的类实现。

我们暂时称它为 IDataTransporter,我们有 2 个实现:

ComPortDataTransporter 和 TcpDataTransporter。

显然,这两个需要非常不同的配置。

第一个具有诸如 buadrate、开始/停止位等设置...第二个具有诸如 ip 地址和端口之类的设置。

是否有任何最佳实践来处理这个问题?最后,我们希望用户能够加载“部件”并对其进行一次配置。

谢谢。

4

1 回答 1

4

也许您可以将某种配置部分与您的传输器部分一起导出。

假设您的主机应用程序定义了一个接口:

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 等)显示适当的控件。

我想通过一些工作,您可以通过 Attributes 为每个属性添加人类可读的描述,这样您就可以为 UI 中的每个控件定义标签。

我还没有完全考虑到这一点,当然我也没有在任何地方实现它,但听起来它可能是一种为每个导入的部件提供灵活设置的方法。

于 2009-05-25T02:26:08.517 回答