System.RuntimeTypesoyut temel sınıftan türetilen somut bir sınıftır System.Type. Yana System.RuntimeTypegenel 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, Typenesneniz a'yı temsil ettiğini bildiriyorsa, önceden sahip olduğunuz bir türü System.RuntimeTypeyanlışlıkla aramadığınızdan emin olun GetType().