在C#4.0中创建键和值的通用集合

时间:2011-07-15 08:29:07

标签: c# generics dictionary

我需要像Dictionary这样的东西,其中dynamic可以是从字符串到对象的任何东西。

但是当我使用对象时,我需要知道对象的类型,然后访问这些对象的相应属性。

有没有办法不使用反射。

* 已编辑**

我试着用这个:

CloneObject<T, TU>(IDictionary<T, TU> sourceObject)

但如果我使用它,如何在不使用反射的情况下访问T的公共字段

3 个答案:

答案 0 :(得分:1)

您可以将Hashtable用于此目的

以下是示例

http://www.dotnetperls.com/hashtable

您还可以使用比Hashtable更有效的Dictionary

参见示例:

http://www.dotnetperls.com/dictionary-keys

答案 1 :(得分:0)

我有点困惑。您试图在字典中存储任何类型的对象,但在没有反射的情况下访问它们。

如果是这样,您可以使用dynamic类型:

Dictionary dict = new Dictionary();

dict["string"] = "some string";
dict["int"] = 25;
dict["my_class"] = new MyClass {SomeProperty = 12};

然后你可以访问所有这些值而不需要任何强制转换:

string s1 = dict["string"].Substring(0, 4); // s1 equals to "some"
int propertyValue = dict["my_class"].SomeProperty; // propertyValue equals to 12

MyClass在哪里:

class MyClass
{
  public int SomeProperty {get;set;}
}

答案 2 :(得分:0)

不使用反射,此任务无法完成。我所做的就是分别创建对象克隆,然后使用它们。