How do you define a getter and setter for complex data types such as a dictionary?
public Dictionary<string, string> Users
{
get
{
return m_Users;
}
set
{
m_Users = value;
}
}
This returns the entire dictionary? Can you write the setter to look and see if a specific key-value pair exists and then if it doesn’t, add it. Else update the current key value pair? For the get, can you return a specific key-value pair instead of the whole dictionary?
It is not possible to do it in a way that would involve only properties. You theoretically could write a setter, but for a getter, you would need to specify a key that you want to retrieve. That is impossible since properties do not accept parameters. Natural way to accomplish what you want would be to use methods:
Alternatively, as others have already said, you could use indexers, but I’ve always found them a little cumbersome. But I guess it’s just a matter of personal preference.
And just for the sake of completeness, this is how a setter could look like, although it’s highly unusual and counter-intuitive to have such a property:
Internally, it uses the
Setmethod from my previous snippet.