c# - 如何在 C# 中对属性进行分组?

标签 c# properties

我不确定我是否正确地表达了问题,但这是我正在尝试做的。

我正在为采用一组参数的程序编写测试框架。我正在开发一个公共(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";

但是,我还需要的是,每次 arg2arg3 更改时,我都需要更新一些属性,例如 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/

相关文章:

c# - chromedriver - 忽略证书错误

objective-c - 是否可以在 Objective-C 中创建私有(private)属性?

c# - SqlParameter Size - 设置为最大大小的负面影响?

c# - 获取调用 SID 记录可以成功完成

c# - 我的 ItemsControl 和数据绑定(bind)有什么问题?

c# - 通过 C# 呈现包含数据的表格的动态 html 的意外行为

java - 从逗号分隔属性列表创建数组的更优雅的解决方案?

objective-c - 隐藏由可变数据支持的不可变属性并支持 Objective-C 中符合 KVO 的集合的最佳模式是什么?

iphone - 将合成(保留)属性设置为 nil 时的 EXC_BAD_ACCESS

javascript - 使用动态计算的名称访问对象属性