Καλημέρα παιδιά, έχω ένα ενδιαφέρον πρόβλημα σήμερα ...
Έχω μια κλάσση η οποία είναι subclass μιάς άλλης, η οποία (ο parent) ορίζει το εξής property:
public virtual byte[] Value
{
get {
// Check for needs initialization ...
if (m_RequiresInit)
Initialize(m_FilePath);
// ok, now return the contents of the file
return m_FileBuffer.ToArray();
}
}
Στο δικό μου subclass όμως, θέλω να "κρύψω" αυτό το property, και να γυρίζω διαφορετικό Type:
public new
XmlDocument Value {
get {
return m_Document;
}
}
Τί γίνεται τώρα όμως .. :( ... άν προσπαθήσω με reflection να πάρω το value αυτού του property, λόγω του ότι η base και η subclass έχουν το ίδιο property, τρώω ένα "Ambigous Match found" Exception ... και λογικό είναι ...
// Get the handler ...
object handler = GetHandler(handlerKey);
// Get the runtime type, and call 'Value' on it ..
Type handlerType = handler.GetType();
PropertyInfo valueProp = handlerType.GetProperty("Value");
return
valueProp.GetValue(handler, null);
Το επόμενο που σκέφτηκα ήταν να καλέσω το GetProperty με BindingFlags.DeclaredOnly ( κάνει evaluate μόνο τα members του runtime type, όχι του base class), αλλά απέτυχα οικτρά, μου δίνει πίσω null reference ...
Κάποια ιδέα;
Angel
O:]