Nur Eigenschaften, die eine Schnittstelle implementieren

Ich habe eine Klasse, die eine Schnittstelle implementiert. Ich möchte nur prüfen, die Eigenschaft Werte, die mein interface implementieren.

So, zum Beispiel, sagen wir ich habe dieses interface:

public interface IFooBar {
    string foo { get; set; }
    string bar { get; set; }
}

Und diese Klasse:

public class MyClass :IFooBar {
    public string foo { get; set; }
    public string bar { get; set; }
    public int MyOtherPropery1 { get; set; }
    public string MyOtherProperty2 { get; set; }
}

So, ich brauche, um dies zu erreichen, ohne die magic-strings:

var myClassInstance = new MyClass();
foreach (var pi in myClassInstance.GetType().GetProperties()) {
    if(pi.Name == "MyOtherPropery1" || pi.Name == "MyOtherPropery2") {
        continue; //Not interested in these property values
    }
    //We do work here with the values we want. 

}

Wie kann ich diese ersetzen:

if(pi.Name == 'MyOtherPropery1' || pi.Name == 'MyOtherPropery2') 

Anstatt zu überprüfen, um zu sehen, ob mein name der Eigenschaft ist == einen magic string, ich möchte einfach überprüfen, um zu sehen, wenn die Eigenschaft implementiert ist, von meinem interface.

InformationsquelleAutor Jeff Reddy | 2011-11-15
Schreibe einen Kommentar