影响作为参数传递给方法的ICollection?

时间:2016-01-06 22:30:25

标签: c# linq inheritance collections

我有一个具有ICollection属性的类,在实例化类时由构造函数指定,但我想将此属性绑定到原始集合,以便在更新/更改时,原始列表也是。这样做的最佳方法是什么?

以下是一个例子:

public class Organizations
{
    private ICollection<Organization> _orgs;

    public Organizations(ICollection<Organization> orgs)
    {
        _orgs = orgs;
    }

    public void TestAdd()
    {
        _orgs.Add(new Organization {Name = "Testing 123"});
    }
}


// in another class
public ActionResult TestApi()
{
    var tmp = new SyncTool.Core.Extensions.Zendesk.Organizations(ZendeskCache.Organizations.Data);
    var zd = ZendeskCache.Organizations.Data.FirstOrDefault(n => n.Name.Contains("Testing 123"));

    //ZendeskCache.Org.... is a List<Organization>

    return Json(new {data = "tmp" }, AG);
}

1 个答案:

答案 0 :(得分:2)

您传递给构造函数的List<Organization>是一个引用对象。这段代码按你想要的方式工作(除了语法错误),你试过吗?

更简单地再现:

public class Program
{
    public static void Main(string[] args)
    {
        var orgs = new List<string>();
        var orgClass = new Organizations(orgs);
        orgClass.TestAdd();
        Console.WriteLine(orgs.First());
        Console.Read();
    }
}

public class Organizations
{
    private ICollection<string> _orgs;

    public Organizations(ICollection<string> orgs)
    {
        _orgs = orgs;
    }

    public void TestAdd()
    {
        _orgs.Add("Testing 123");
    }
}

//Output: "Testing 123"