不可能以仅涉及属性的方式进行。理论上您可以编写一个 setter,但对于 getter,您需要指定一个要检索的键。这是不可能的,因为属性不接受参数。完成您想要的自然方法是使用方法:
private Dictionary<string, string> users = new Dictionary<string, string>();
public void Set(string key, string value)
{
    if (users.ContainsKey(key))
    {
        users[key] = value;
    }
    else
    {
        users.Add(key, value);
    }
}
public string Get(string key)
{
    string result = null;
    if (users.ContainsKey(key))
    {
        result = users[key];
    }
    return result;
}
或者,正如其他人已经说过的那样,您可以使用索引器,但我一直觉得它们有点麻烦。但我想这只是个人喜好问题。
只是为了完整起见,这就是 setter 的样子,尽管拥有这样的属性是非常不寻常且违反直觉的:
public KeyValuePair<string, string> Users
{
    set
    {
        Set(value.Key, value.Value);
    }
}
在内部,它使用Set我之前的代码片段中的方法。