McM*_*ons 3 c# inheritance abstract-class interface
我正在将http GET查询字符串解析为其组件.在尝试使其模块化(参数的数量和类型可以变化很大)时,我希望有一个参数抽象基类或接口来定义是否已设置属性,以及设置方法的Set方法值.有没有办法用Set方法的变量参数类型做到这一点?
总体思路如下:
public abstract class Parameter
{
public bool IsSet { get; protected set; }
protected Parameter() { IsSet = false; }
public abstract void Set( --unknown type here-- );
}
Run Code Online (Sandbox Code Playgroud)
一个示例参数子将是这样的:
public class IntParameter : Parameter
{
public int Value { get; protected set; }
public void Set(int value)
{
Value = value;
IsSet = true;
}
}
Run Code Online (Sandbox Code Playgroud)
通过这种结构,我可以将每个查询参数抛入其适当的强类型类中,但仍然确保所有这些都是一致的.IsSet属性的原因是能够检查参数是否已设置,因为某些参数没有任何"安全"值,我肯定不会故意传递这些值.如果未设置值,则会获得一个默认值.
看看这个问题,我怀疑它是否可以像我想要实现它那样处理,但是这个例子应该能够了解我希望能够做到的事情.
有没有关于如何最好地处理它的建议.如果有一个方便的设计模式或常见的方式,我不会感到惊讶,但我没有设法谷歌一个.
我看到的选项是:
还有其他想法吗?:)
Adr*_*der 10
你可能正在寻找这样的东西吗?
public abstract class Parameter<T>
{
public bool IsSet { get; protected set; }
protected Parameter() { IsSet = false; }
public abstract void Set(T value);
public T Value;
}
public class IntParameter : Parameter<int>
{
public override void Set(int value)
{
Value = value;
IsSet = true;
}
}
Run Code Online (Sandbox Code Playgroud)