Benim ilk mesaj ... Umut yararlı işler projemde bakar Bunun yerine, böyle bir şey denemek ...
public dynamic ConvertList(Type CallingType)
{
dynamic DynamicList;
if (CallingType == TypeOfValue)
{
Type d1 = typeof(List<>);
Type[] typeArgs = { TypeOfValue };
Type DynamicListType = d1.MakeGenericType(typeArgs);
object DynamicListObj = Activator.CreateInstance(DynamicListType);
DynamicList = Convert.ChangeType(DynamicListObj, DynamicListType);
foreach (object ValueElement in ValueRange)
{
dynamic el = Convert.ChangeType(ValueElement, TypeOfValue);
DynamicList.Add(el);
}
}
else //retrun empty List but with right type
{
Type d1 = typeof(List<>);
Type[] typeArgs = { CallingType };
Type DynamicListType = d1.MakeGenericType(typeArgs);
object DynamicListObj = Activator.CreateInstance(DynamicListType);
DynamicList = Convert.ChangeType(DynamicListObj, DynamicListType);
}
return DynamicList;
}
Ayrıca bir yere bir yakalama yakalayacağım.
nasıl test
if (PropertyType == typeof(UInt32))
{
List<UInt32> UInt32_test = NewProperty.ConvertList(PropertyType);
}
if (PropertyType == typeof(string))
{
List<string> string_test = NewProperty.ConvertList(PropertyType);
}
o kadar türgüvenli olmadığı için bu, her iki sürümü 4'te mümkün olmayacaktır ya "upcast" veya "mahzun" bir 'Liste' - bu değişmez, değil covariant veya kontravaryant. Bu arada, koleksiyon co/contravariance ile ilgili her soruya verilen bu yanlış bilgiden bıktım. –