Tôi có một lớp thực hiện giao diện. Tôi chỉ muốn kiểm tra các giá trị thuộc tính thực hiện giao diện của tôi.Chỉ nhận các thuộc tính thực hiện giao diện
Vì vậy, chúng ta hãy nói ví dụ tôi có giao diện này:
public interface IFooBar {
string foo { get; set; }
string bar { get; set; }
}
Và lớp này:
public class MyClass :IFooBar {
public string foo { get; set; }
public string bar { get; set; }
public int MyOtherPropery1 { get; set; }
public string MyOtherProperty2 { get; set; }
}
Vì vậy, tôi cần phải thực hiện điều này, nếu không có sự dây ma thuật:
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.
}
Làm cách nào để thay thế điều này:
if(pi.Name == 'MyOtherPropery1' || pi.Name == 'MyOtherPropery2')
Thay vì kiểm tra xem tên thuộc tính của tôi có là ==
đến chuỗi ma thuật hay không, tôi chỉ muốn kiểm tra xem thuộc tính có được triển khai từ giao diện của tôi hay không.
Tôi đang sử dụng giao diện để so sánh các giá trị của hai đối tượng mà thực hiện giao diện đó, nhưng có thể không cùng loại. Về cơ bản, kiểm tra bình đẳng giữa hai loại khác nhau. Hàm với mã này không chỉ trả về giá trị bằng/không bằng nhau, mà là sự khác biệt. Đó là lý do cho sự phản chiếu. –
Đề xuất thứ hai của tôi có giúp ích gì không, chỉ cần lặp lại các thuộc tính trên loại giao diện? –
Vâng, đó là những gì tôi cần. Tôi sẽ chấp nhận câu trả lời của bạn ngay khi thời gian chấp nhận hết hạn. Cảm ơn Paul. –