有关创建对象数组的建议

时间:2011-06-07 19:34:03

标签: c# object

我正在查看特定服务的注册表项。所以我创建了一个类,所以我可以为特定服务的regKeys创建我的对象。

有多个服务都具有针对该特定服务的多个注册密钥。

我的班级

class Component
{
    private String regkey;
    private String regpath;

    //regkey
    private String getRegkey(String name)
    { return name; }

    public string regkeyProp
    {
        get { return (regkey); }
        set { regkey = getRegkey(value); }
    }

    //regpath
    private String getRegPath(String name)
    { return name; }

    public string regPathProp
    {
        get { return (regpath); }
        set { regpath = getRegPath(value); }
    }
}

所以现在我已经定义了我的类,所以我可以创建我的对象。所以我的一项服务是 同步服务。所以我创建了一个名为sync的新对象。

Component SYNC= new Component();

我的其他功能扫描认为他阵列并抓住每一个regkey&同步服务的路径。

当我构建Sync对象时,我正在分配我的regkeyProperty。

Sync.regkeyProps = regkeyValue;

所以这里的问题是一个同步服务有很多regkeys,当它通过数组进行for循环时,它每次只存储最后一个reg键。

我很难说我能做到这一点。我会假设某种阵列?

3 个答案:

答案 0 :(得分:0)

某种形式的IEnumerable可能是您最好的选择。根据您拥有它们后想要执行的操作,您可以使用List<T>(非常好我的默认值)或IEnumberable接口的任何其他具体实现。

尽管您已经为“组件”课程获得了什么,但是您可以(可能在进行更改之前确保自己确定)更好地使用Dictionary<string, List<string>>而不是创建自定义类使用值列表保存相当于Key的键。

你会得到这样的名字(替换你的getRegPath

\\Assuming Components is a Dictionary as mentioned and "name" is the string you pass into your method
Components[name]

这将使您获得由Key“name”(在您的情况下是注册表项)定义的字典中的元素,并且您可以访问属性,如:Components[name].Value[0]或任何其他访问方法List<T>

中的特定项目

再次,YMMV,所以在做出改变之前,请确保词典最适合你。

答案 1 :(得分:0)

我不能说我完全理解,但这是一个可能有所帮助的建议。

Sync.regkeyProps = regkeyValue;

您可以使用List并添加到列表中,而不是使用数组。

所以你可以做到

Sync.regkeyProps.Add(regkeyValue),它将插入到数组中而不必担心索引。

答案 2 :(得分:0)

我猜测你究竟是在问什么,但我想你要保留一个超过1 Component个对象的列表。你可以通过这样做来实现这个目标:

List<Component> syncItems = new List<Component>();

foreach (/* not sure how you loop over the items */)
{
  Component sync = new Component();
  sync.regKeyProp = ...
  syncItems.Add(sync);
}

另外作为旁注,我建议从Component中选择一个不同的名称,因为Component已经是.NET中大量使用的一些概念的名称