使用相同对象的列表c#在另一个类中分配对象的私有字段

时间:2018-02-01 15:05:04

标签: c#

我有两个类,一个ExampleClass和一个ExampleClassManager,其中包含ExampleClass列表。

ExampleClass有一个私人_id字段,我想在ExampleClassManager类中设置该字段。这可能吗?

public class ExampleClass
{
    //Fields
    private string _id; //Should be set in ExampleClassManager
}


public class ExampleClassManager
{
    //Fields
    List<ExampleClass> exampleClassList = new List<ExampleClass>();  
}

3 个答案:

答案 0 :(得分:5)

有几种可能的选择。

  1. 公开(不推荐,因为它不好)
  2. 创建用于访问的公共属性
  3. 创建一个公共方法来设置值(基本上与第二个选项相同)
  4. 用反射做
  5. 我更喜欢第二种选择,因为我认为这是一种清洁方式。如果您没有机会更改修改器,则必须使用第四个选项。

答案 1 :(得分:0)

为此您可以使用属性。

msdn doc

answer on stackoverflow

答案 2 :(得分:0)

示例1 :(如Kevin Cook所说)ExampleClass在构造函数中使用id,然后id无法更改:

public class ExampleClass
{
    public class ExampleClass(string id)
    {
        _id = id;
    }

    //Fields
    private readonly string _id; //note the use of **readonly**
    public string Id { get {return _id; } } //So ExampleClassManager can see the id
}

用法:

var actualObject = new ExampleClass("abc123");
string myObjectId = actualObject.Id // This should be what was passed in... "abc123"

我可以举一个代码示例来说明如何通过属性更改id,但我还没看到你想要一个对象标识符一旦创建就改变。您可能很容易想要改变其他领域,但这是一个不同的问题。