Best practices about creating a generic object dictionary in C#? Is this bad?
Posted
by
JimDaniel
on Stack Overflow
See other posts from Stack Overflow
or by JimDaniel
Published on 2011-01-02T05:06:57Z
Indexed on
2011/01/03
4:53 UTC
Read the original article
Hit count: 226
c#
|type-safety
For clarity I am using C# 3.5/Asp.Net MVC 2
Here is what I have done: I wanted the ability to add/remove functionality to an object at run-time. So I simply added a generic object dictionary to my class like this:
public Dictionary<int, object> Components { get; set; }
Then I can add/remove any kind of .Net object into this dictionary at run-time. To insert an object I do something like this:
var tag = new Tag();
myObject.Components.Add((int)Types.Components.Tag, tag);
Then to retrieve I just do this:
if(myObject.Components.ContainsKey((int)Types.Components.Tag))
{
var tag = myObject.Components[(int)Types.Components.Tag] as Tag;
if(tag != null) { //do stuff }
}
Somehow I feel sneaky doing this. It works okay, but I am wondering what you guys think about it as a best practice.
Thanks for your input, Daniel
© Stack Overflow or respective owner