iAmConfigurable在抽象基类中具有派生类中任何类型的可配置选项

时间:2013-02-27 09:10:08

标签: c# generics interface abstract

我想要的是一个可以具有任何类型的可配置属性/变量的类。 并且在界面中定义了设置和获取这些配置的方式。 它将成为某种插件架构。每个插件都有自己的unknonwn类型的可配置参数(让它成为字符串,double,int,等等)。用户可以在GUI中设置这些,并且这些将由插件的主机应用程序存储在数据库中。

问题是,在设置任何类型的这些配置时,我怎么不知道如何实现这种抽象形式。如果没有必要将Object转换为例如,那就太好了。配置课程时double

我有这个pseudo代码让自己更清楚,见下文。

public class Configurable<T>
{
    string Name;
    T Value;
    string Description;
}

public interface iAmConfigurable
{
    void Set(Configurable<T>);
    Configurable<T> Get(string name);
}

public abstract class MyBaseClass : iAmConfigurable
{
    public abstract void Set(Configurable<T>);
    public abstract Configurable<T> Get(string name);
}

public class MyDerivedClass : MyBaseClass
{
    Configurable<int> MinimumSlope = new Configurable<int>
    {
        Name = "MinimumSlope",
        Value = 20,
        Description = "The lowest the slope of the trend may get before triggering the alarm"
    }

    public abstract void Set(string name, T value)
    {
        if(name == "MinimumSlope") MinimumSlope.Value = value;
    }

    public abstract Configurable<T> Get(string name)
    {
        if(name == "MinimumSlope") return MinimumSlope;
    }
}

0 个答案:

没有答案