System.RuntimeType
soyut temel sınıftan türetilen somut bir sınıftır System.Type
. Yana System.RuntimeType
genel değil, genellikle olduğu gibi bunun örneklerini karşılaşacak System.Type
.
Bir nesnenin türünü almaya çalıştığınızda ve yanlışlıkla GetType()
o nesneyi doğrudan kullanmak yerine, yanlışlıkla ilk nesnenin türünü temsil eden başka bir nesneyi çağırdığınızda kafa karışıklığı ortaya çıkabilir . Ardından çağrıldığı nesne bir Tipi temsil ettiğinde Type.ToString()
geri dönecektir "System.RuntimeType"
:
string str = string.Empty;
Type strType = str.GetType();
Type strTypeType = strType.GetType();
strType.ToString();
strTypeType.ToString();
Örneğin, bu blog gönderisinde birisi veritabanındaki bir sütunun türünü almaya çalışıyor ve şöyle bir şey yapıyor:
object val = reader.GetFieldType(index);
Type runtimeType = val.GetType();
PropertyInfo propInfo = runtimeType.GetProperty("UnderlyingSystemType");
Type type = (Type)propInfo.GetValue(val, null);
Val zaten bir Type nesnesi olduğundan, val.GetType () System.RuntimeTime
, orijinal tür nesnesini temsil etmek için kullanılan somut tür olduğundan türü temsil eden başka bir Type nesnesi döndürür . Blog gönderisi daha sonra, gerçekten gerekli olan tek şey şuyken, orijinal tip nesnesinin türünü elde etmek için bazı gereksiz yansıma hileleri gösterir:
Type type = reader.GetFieldType(index) as Type;
Dolayısıyla, Type
nesneniz a'yı temsil ettiğini bildiriyorsa, önceden sahip olduğunuz bir türü System.RuntimeType
yanlışlıkla aramadığınızdan emin olun GetType()
.