Lưu ý: Đây là lần theo dõi answer trên previous question.Sử dụng phản chiếu để nhận thuộc tính của thuộc tính thông qua phương thức được gọi từ thiết lập số
Tôi đang trang trí setter của một thuộc tính với một Thuộc tính được gọi là TestMaxStringLength
được sử dụng trong phương pháp được gọi từ trình thiết lập để xác thực.
Khách sạn hiện trông như thế này:
public string CompanyName
{
get
{
return this._CompanyName;
}
[TestMaxStringLength(50)]
set
{
this.ValidateProperty(value);
this._CompanyName = value;
}
}
Nhưng tôi thà cho nó trông như thế này:
[TestMaxStringLength(50)]
public string CompanyName
{
get
{
return this._CompanyName;
}
set
{
this.ValidateProperty(value);
this._CompanyName = value;
}
}
Mã cho ValidateProperty
đó là chịu trách nhiệm về nhìn lên các thuộc tính của setter là :
private void ValidateProperty(string value)
{
var attributes =
new StackTrace()
.GetFrame(1)
.GetMethod()
.GetCustomAttributes(typeof(TestMaxStringLength), true);
//Use the attributes to check the length, throw an exception, etc.
}
Làm cách nào để thay đổi ValidateProperty
mã để tìm thuộc tính trên thuộc tính thay vì phương thức thiết lập ?
Ooh. Tôi thích cách tiếp cận này tốt hơn nhiều so với quan điểm mã hóa. Tất nhiên, việc trang trí thuộc tính là vô dụng trừ khi việc xác nhận được thực thi, điều này khó hơn một chút để giả định trong mô hình này, nhưng tổng thể nó phải nhanh hơn và sạch hơn. –
bạn có thể vui lòng cho tôi biết làm cách nào để xác thực giá trị đối với các atts? Cảm ơn! – VladL