Tôi có một tập hợp một số thuộc tính mà tất cả nên được sử dụng cùng lúc cho Giao diện người dùng và Xác thực. Ví dụ: đối với trường tiền tệ, tôi phải thêm Gợi ý giao diện người dùng, Logic xác thực và Định dạng hiển thị. Kết quả là, lớp của tôi trông rất đông đúc.Kết hợp các thuộc tính chú thích dữ liệu
public class Model
{
[UIHint("Currency")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:C}")]
[CustomRegularExpression(Currency.ValidationPattern, OnlyOnClientSide = true)]
[SetMetaDataForCustomModelBinder("Currency")]
public double? Cost { get; set; }
[UIHint("Currency")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:C}")]
[CustomRegularExpression(Currency.ValidationPattern, OnlyOnClientSide = true)]
[SetMetaDataForCustomModelBinder("Currency")]
public double? Profit { get; set; }
}
Có cách nào để tạo ra một thuộc tính [Currency]
kết hợp các chức năng của tất cả những thuộc tính này là một thuộc tính đơn giản? Mục tiêu của tôi là tạo các mục sau:
public class Model
{
[Currency] public double? Cost { get; set; }
[Currency] public double? Profit { get; set; }
}
EDIT: Để làm rõ, tôi không có giao diện nào cho phép tôi triển khai chức năng của các thuộc tính khác nhau đó. Tôi có thể phân lớp ValidationAttribute, nhưng sau đó tôi cũng không thể phân lớp UIHintAttribute. Bất kỳ giải pháp tiềm năng khác mà tôi đang thiếu?
câu hỏi thú vị. Đây là lãnh thổ @DarinDimitrov –
Đoán của tôi là bạn sẽ cần một cái gì đó như Postsharp và sử dụng AOP. –
Tôi rất tò mò về cách thực hiện điều này. Tôi rất muốn có thể thực hiện điều này – amhed