Belirli bir nesnenin belirli bir tür örneğine dönüştürülmesi için bir yöntem yazmaya çalışıyorum. Bunun ile başladı:C# Bazı genel döküm awesomeness Yardımı ile bana yardım
private static T TryCast<T>(object o)
{
return (T) o;
}
işe gitmiyor biliyoruz Gidiş, ama kavramını göstermektedir. Şimdi, string -> DateTime gibi otomatik olarak yayınlanmayan türlerim olduğunda sorun yaşamaya başlayacağım. Bu durumlarla başa çıkmak için Convert Class'ı kullanmaya çalışıyordum, ancak bir çalışma zamanı hatası yerine derleme zamanı hatası alıyorum. Aşağıdaki kod yazmak için türü 'dize' ifadesini döküm Can not derleme hatası" alır 'T'
private static T TryCast<T>(object o)
{
var typeName = typeof (T).FullName;
switch (typeName)
{
case "System.String":
return (T) Convert.ToString(o);
default:
return (T) o;
}
}
Ben de Convert.ChangeType() farkında değilim, ama kenar idare edecek merak ediyorum Ben aksi belirtilen dize gibi yukarıdaki anahtarı bakacaklarını durumlar -.? biri verebilir Eğer> normalde sadece için Convert.ToDateTime kullanmayı tercih ediyorum DateTime
private static T TryCast<T>(object o)
{
return (T)Convert.ChangeType(o, typeof(T));
}
Yani, benim en iyi seçenek nedir bana çalışabilir bir yaklaşım, oradan alabilirim
Tamam, biraz bağlam vermek için, bu yöntemin hemen kullanımı, bir DataRow nesnesindeki sütun değerlerinden T türünün bir örneğindeki özellikleri dinamik olarak atamaktır. Bir String, örnekte Key = özellik adının ve DatRow'daki Value = sütun adının geçmesini isterdim. PropertyInfos'u türünden almak ve örnek değerlerini ayarlamak için yazılan yansımam zaten var. Bu döküm bit, bulmacanın son parçası. Mümkün olduğu kadar tekrar kullanılabilir olmasını isterdim, ancak kapsamınızı benim örneğimle sınırlarsa, bunu kolaylaştırır. –
Yukarıdaki 2. örnekte derleyici hatasının neden oluştuğunu ve neden olduğunu biliyorum. Ben sadece yaklaşımı göstermek için kullanıyorum, teşekkürler. Bu yeni değil: <) –