Evet, Yansıma gitmek için bir yol olurdu. İlk olarak, Type
listenin içinde örneğin türünü (çalışma zamanında) temsil eder. GetType
YöntemiObject
çağırarak bunu yapabilirsiniz . Üzerinde Çünkü Object
sınıfın, bu tarafından çağrılabilir var her her türlü kaynaklanıyor gibi .NET nesne Object
( kuyu, teknik olarak değil her şey ama burada önemli değil).
Örneği aldıktan sonra Type
, üzerindeki özellikler hakkında çalışma zamanı bilgilerini temsil eden örnekleri almak için GetProperties
yöntemi çağırabilirsiniz .PropertyInfo
Type
Hangi özellikleri aldığınızın GetProperties
sınıflandırılmasına yardımcı olması için aşırı yüklerini kullanabilirsiniz .
Oradan, bilgileri bir dosyaya yazmanız yeterlidir.
Yukarıdaki kodunuz çevrildi:
// The instance, it can be of any type.
object o = <some object>;
// Get the type.
Type type = o.GetType();
// Get all public instance properties.
// Use the override if you want to classify
// which properties to return.
foreach (PropertyInfo info in type.GetProperties())
{
// Do something with the property info.
DoSomething(info);
}
Yöntem bilgisi veya alan bilgisi istiyorsanız, sırasıyla GetMethods
veya GetFields
yöntemlerinin aşırı yüklenmelerinden birini çağırmanız gerektiğini unutmayın .
Ayrıca not, bir dosyaya üyelere dışarı listeye bir şey, ama olmamalı özellik setleri dayalı sürücü mantığı bu bilgileri kullanırlar.
Türlerin uygulamaları üzerinde denetiminiz olduğunu varsayarsak, ortak bir temel sınıftan türetmeli veya ortak bir arabirim uygulamalı ve bunlara çağrı yapmalısınız ( hangi temel sınıf / arabirimde çalıştığınızı belirlemenize yardımcı olması için as
veya is
operatörünü kullanabilirsiniz . Çalışma süresi).
Ancak, bu tür tanımları denetlemezseniz ve desen eşleşmesine dayalı mantığı çalıştırmanız gerekiyorsa, sorun olmaz.