我不确定我是否正确地表达了问题,但这是我正在尝试做的。
我正在为采用一组参数的程序编写测试框架。我正在开发一个公共(public)类来处理有关这些参数的操作。这样用户就可以使用 like,
Load(SampleProgram.CommandArgs args)
{}
public class CommandArgs
{
public string Arg1
{
get; set;
}
public string Arg2
{
get; set;
}
public string Arg3
{
get; set;
}
public string Parsedvalue
{
get; set;
}
//......and so on..
}
我的问题是,在这些 args 中,Arg2 和 Arg3 属于一个类型,用户可能需要稍后更改它们,即使其余的 args 可能不会更改。所以我将 arg2 和 arg3 移到一个单独的类中,我希望 CommandArgs 类重用它。我该怎么做呢?
我试过了
public class CommandArgs
{
private GroupedCommandArgs grpargs = null;
public string Arg1
{
get; set;
}
//......and so on..
}
//In constructor..
grpargs = new GroupedCommandArgs(arg2, arg3);
如果用户想要更改 arg2
,他或她可以这样写,
CommandArgs.GroupedCommandArgs.arg2 = "something";
但是,我还需要的是,每次 arg2
或 arg3
更改时,我都需要更新一些属性,例如 Parsedvalue
。
我该怎么做?我的代码在 C# 中。
谢谢
最佳答案
使用继承。在 CommandArgs
基类中包含通用参数,对于具有 exctra 属性的情况,创建子类,如 AdditionalCommandArgs
。
class CommandArgs
{
public string Arg1 { get; set; }
public virtual string ParsedValue
{
get
{
return "Arg1: " + Arg1;
}
}
}
class AdditionalCommandArgs : CommandArgs
{
public string Arg2 { get; set; }
public string Arg3 { get; set; }
public override string ParsedValue
{
get
{
return base.ParsedValue + "\r\n" +
"Arg2: " + Arg2 + "\r\n" +
"Arg3: " + Arg3;
}
}
}
关于c# - 如何在 C# 中对属性进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5124356/