Bazı kod var ....Yerel değişken tür olarak nasıl kullanılır? Derleyici, "bu bir değişken gibi kullanılır ama bir türü gibi kullanılır"
Çalışma zamanı ortamında, ne tür bir tür v1 değişkeni olduğunu bilmiyoruz! Bu sebeple "if else" ifadesini bir çok kez yazmalıyız!
if (v1 is ShellProperty<int?>)
{
v2 = (v1 as ShellProperty<int?>).Value;
}
else if (v1 is ShellProperty<uint?>)
{
v2 = (v1 as ShellProperty<uint?>).Value;
}
else if (v1 is ShellProperty<string>)
{
v2 = (v1 as ShellProperty<string>).Value;
}
else if (v1 is ShellProperty<object>)
{
v2 = (v1 as ShellProperty<object>).Value;
}
4 kere yazdım! fark sadece ShellProperty < anytype içindedir>
Bunun yerine bu kullanarak çizgileri bir sürü yazı "eğer başka ifadesi" Ben çalışma anında özellik türü almak için kullanılması Yansıma kullanmaya karar
!
Type t1 = v1.GetType().GetProperty("Value").PropertyType;
dynamic v2 = (v1 as ShellProperty<t1>).Value;
Bu kod PropertyType tür v1 ve atar güzel lo yerel değişken t1 ne alabilirsiniz.
Ama sonra benim derleyici "t1 bir değişkendir ama bir tip gibi kullanılan" yüzden beni ShellProperty içindeki t1 yazmak için izin vermez
söylüyor, <>
nasıl bu sorunu çözmek için ve nasıl söyle sahip olduğumdan daha kompakt kod almak için?
Yeni sınıf oluşturmak gerekli mi?
Bu şekilde jenerik kullanamazsınız. Jenerikler derleme zamanında güçlü bir şekilde yazılmıştır. –
Yani, bu şekilde – IremadzeArchil19910311
mümkün olmadığı anlamına gelmiyor. ama sen zaten dinamik yapıyorsun. –