C# IEnumerable Add方法仅在使用集合初始值设定项时可用

C# IEnumerable Add方法仅在使用集合初始值设定项时可用,c#,collections,enumerable,collection-initializer,C#,Collections,Enumerable,Collection Initializer,我计划基于JObject创建一个不可变的类 其中一个要求是将对象直接反序列化到我的新自定义类上,就像我们对JObject所做的那样 我已经实现了GetEnumerator和Add方法来启用集合初始值设定项 代码如下所示 public sealed class ImmutableJObject : IEnumerable { readonly jObject jObeject; public ImmutableJObject(params object[] content)

我计划基于JObject创建一个不可变的类

其中一个要求是将对象直接反序列化到我的新自定义类上,就像我们对JObject所做的那样

我已经实现了GetEnumerator和Add方法来启用集合初始值设定项

代码如下所示

public sealed class ImmutableJObject : IEnumerable
{
    readonly jObject jObeject;

    public ImmutableJObject(params object[] content)
    {
        this.jObject = new jObject(content);
    }

    public IEnumerator GetEnumerator()
    {
        return ((IEnumerable)jObject).GetEnumerator();
    }

    public void Add(string propertyName, JToken value)
    {
        this.jObject.Add(propertyName, value);
    }
}
只有在使用集合初始值设定项时,才能使Add方法可访问吗

由于本质上是不可变的,我不希望Add方法是公共的。 但是,它看起来需要是公共的,以便启用集合初始值设定项


谢谢你

否,无法将Add方法的使用限制为集合初始值设定项。集合初始值设定项生成构造对象的代码,然后对其进行变异,因此根据定义,类型不能支持实际上能够对其进行初始化的集合初始值设定项,即集合初始值设定项不只是抛出异常且不可变