Установить ItemName в CollectionDataContract динамически

У меня есть класс, реализующий CollectionDataContract, который я хочу использовать для различных словарей. Каждый словарь имеет свои собственные ItemName и KeyName. Можно ли динамически устанавливать значения ItemName и KeyName? Я не хочу создавать класс для каждого типа словаря.

Я хочу избежать этого:

[CollectionDataContract(ItemName = "Book", KeyName = "Name")]
public class BookDictionary<TKey, TValue> : Dictionary<TKey, TValue>
{
    public BookDictionary() : base(){}
}

[CollectionDataContract(ItemName = "Product", KeyName = "ID")]
public class ProductDictionary<TKey, TValue> : Dictionary<TKey, TValue>
{
    public ProductDictionary() : base(){}
}

person lerner1225    schedule 12.03.2014    source источник


Ответы (1)


Попробуй это:

var obj = new ExpandoObject();
DataSet ds = GetObjectProperties() // returns dataset having the properties as key and value pair;
if (ds.Tables["BookTable"].Rows.Count > 0)
{
    foreach (DataRow dr in ds.Tables["BookTable"].Rows)
    {
        string KeyName = dr["KeyName"].ToString();
        string ValueName= dr["ValueName"].ToString();
        obj[KeyName] = ValueName;
    }
}
dynamic DynObj = obj;
person Aditi    schedule 12.03.2014