Robert Jordan escribió:
> Andrés G. Aragoneses [ knocte ] wrote:
>> Today I've come out with this wish:
>>
>> Dictionary<typeof(T), List<T>> InternalCollection;
>>
>>
>> Of course, the compiler tells me an error, but I would want to know if I 
>> can make this kind of collection with C# generics, in order to obtain 
>> syntatic sugar and type safety, I mean:
>>
>> //compilation should succeed only if oMyObj is TypeX:T
>> InternalCollection.Add(typeof(TypeX), oMyObj);
>>
>> Any thoughts?
> 
> class FooDictionary<T> : Dictionary<System.Type, T>
> {
>       public void Add (T t)
>       {
>               this [typeof(T)] = t;
>       }
> }
> 

But that would only allow adding one object:

class mytype
{
   ...
}

class subtypeA : mytype
{
   ...
}


class subtypeB : mytype
{
   ...
}

FooDictionary<mytype> foo = new FooDictionary<mytype>();
foo.Add(new subtypeA());
foo.Add(new subtypeB());

This last addition would remove previous object because we are using 
typeof(mytype) instead of typeof(subtype), am I right?


Besides, what I want to store is a List, not an object (I know, it 
wasn't clear in first email), so my wish would be:

FooDictionary<mytype> foo = new FooDictionary<mytype>();
List<subtypeA> listA = new List<subtypeA>();
List<subtypeB> listB = new List<subtypeB>();
listA.Add(new subtypeA());
listB.Add(new subtypeB());
foo.Add(listA);
foo.Add(listB);

Thanks for your answer,

        Andrés  [ knocte ]

-- 


_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to