Q:

How to add a specific value to all class instances?

Right now I have the following code:
public class Argument
{
    public static readonly Argument ApiKey = new Argument("api_key", true);

    private string _key;
    private bool _required;
    private string _value;

    private Argument(string name, bool required)
    {
        _key = name;
        _required = required;
    }

    public void AddValue(string value)
    {
        _value = value;
    }
}

What I want to achieve is that when I execute ApiKeyInstance.AddValue("apikey");, the value of this is added to all instances of the ApiKey Argument instance. 
How can I complete this code to achieve what I want, or is there a better way to achieve this? What I'm thinking of right now is using a Singleton but if so, how can I add the specific value, without a reference in the code? (Something like Argument arg = Argument.ApiKey; arg.AddValue("str");)

A:

As John notes in his comment, ApiKey is static, so the same value is shared across all object instances.
Additionally, it is marked readonly, which means that the ApiKey instance assigned cannot be changed once set, though you can modify properties of that instance if the ApiKey class so allows.  Such modifications would be visible to all instances of the Argument class.

