Evet, Yansıma gitmek için bir yol olurdu. İlk olarak, Typelistenin içinde örneğin türünü (çalışma zamanında) temsil eder. GetTypeYöntemiObject çağırarak bunu yapabilirsiniz . Üzerinde Çünkü Objectsı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 GetPropertiesyöntemi çağırabilirsiniz .PropertyInfoType
Hangi özellikleri aldığınızın GetPropertiessı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 GetMethodsveya GetFieldsyö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 asveya isoperatö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.