5 Kasım 2008, ÇARŞAMBA
Oluşturulmuş Bir Sistem Başarılı.Bir Yazın türü olarak Genel bir Sınıf için Parametre
Başlık biraz belirsiz. Bilmek istediğim şey, eğer bu mümkün değilse
string typeName = <read type name from somwhere>;
Type myType = Type.GetType(typeName);
MyGenericClass<myType> myGenericClass = new MyGenericClass<myType>();
Belli ki, MyGenericClass olarak tanımlanır:
public class MyGenericClass<T>
Şu anda, derleyici bu 'tür veya ad 'myType' bulunamadı." yakınıyor Bunu yapmanın bir yolu olmalı.
CEVAP
5 Kasım 2008, ÇARŞAMBA
Yansıma olmadan bunu yapamazsın. Ancak, senolabiliryansıması ile. İşte tam bir örnek:
using System;
using System.Reflection;
public class Generic<T>
{
public Generic()
{
Console.WriteLine("T={0}", typeof(T));
}
}
class Test
{
static void Main()
{
string typeName = "System.String";
Type typeArgument = Type.GetType(typeName);
Type genericClass = typeof(Generic<>);
// MakeGenericType is badly named
Type constructedClass = genericClass.MakeGenericType(typeArgument);
object created = Activator.CreateInstance(constructedClass);
}
}
Not: Eğer genel bir sınıf birden fazla türde kabul ederse, örneğin: tür adları atladığınızda virgül içermelidir
Type genericClass = typeof(IReadOnlyDictionary<,>);
Type constructedClass = genericClass.MakeGenericType(typeArgument1, typeArgument2);
Bunu Paylaş:
Bu tip 'genel tür parametre olara...
Bu tip 'T' genel tür veya yö...
Genel bir parametre olarak yazın mümkü...
Nasıl jenerik T türü bir sınıf örneği ...
Geçen anahtar kelime python parametre ...