Tengo una clase que implementa una interfaz. Me gustaría examinar solo los valores de las propiedades que implementan mi interfaz.Obtener solo las propiedades que implementan una interfaz
tanto, vamos a decir, por ejemplo, tengo esta interfaz:
public interface IFooBar {
string foo { get; set; }
string bar { get; set; }
}
Y esta clase:
public class MyClass :IFooBar {
public string foo { get; set; }
public string bar { get; set; }
public int MyOtherPropery1 { get; set; }
public string MyOtherProperty2 { get; set; }
}
Por lo tanto, tengo que lograr esto, sin las cuerdas mágicas:
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.
}
¿Cómo puedo reemplazar esto:
if(pi.Name == 'MyOtherPropery1' || pi.Name == 'MyOtherPropery2')
En lugar de verificar si el nombre de mi propiedad es ==
en una cadena mágica, me gustaría simplemente verificar si la propiedad se implementó desde mi interfaz.
estoy usando la interfaz de comparar los valores de dos objetos que implementan la interfaz, pero puede no ser del mismo tipo. Básicamente una verificación de igualdad entre dos tipos diferentes. La función con este código no solo devuelve el igual/no igual, sino las diferencias. Esa es la razón de la reflexión. –
¿Mi segunda sugerencia ayuda, simplemente iterar las propiedades en el tipo de interfaz? –
Sí, eso es lo que necesitaba. Aceptaré tu respuesta tan pronto como expire el tiempo de aceptación. Gracias Paul. –