2010-05-13 42 views
21

Chúng tôi có một số mã DB Vâng-quy cho, như vậy:Sử dụng các biến trong thuộc tính trong C#

[Display(Name = "Phone Number")] 
public string Phone { get; set; } 

Vì nó là khá chung chung, chúng tôi muốn sử dụng nó một lần nữa, nhưng với một chuỗi khác nhau trong Tên một phần của thuộc tính. Vì nó là một thuộc tính nó có vẻ muốn điều cần được const, vì vậy chúng tôi cố gắng:

const string AddressType = "Student "; 
[Display(Name = AddressType + "Phone Number")] 
public string Phone { get; set; } 

Điều này dường như làm việc ổn, ngoại trừ việc có một chuỗi const nghĩa là chúng ta không thể ghi đè lên nó trong bất kỳ lớp học cơ sở, do đó loại bỏ chức năng mà chúng tôi ban đầu có ý định thêm và hiển thị câu hỏi của tôi:

Có cách nào để sử dụng một số biến bên trong thuộc tính để chúng tôi có thể kế thừa và giữ nguyên trang trí thuộc tính không?

Trả lời

19

Mọi thứ bên trong thuộc tính phải được trình biên dịch biết đến lúc biên dịch. Các biến số vốn đã biến (!) Nên không thể được sử dụng trong các thuộc tính.

Nếu bạn có thể sử dụng công cụ tạo mã, bạn có thể tự động chèn các giá trị khác nhau (hằng số) vào mỗi lớp dẫn xuất.

+0

Điều đó quá tệ, nhưng tôi đã tính như vậy. Cảm ơn. – thepaulpage

+0

Điều đó thực sự quá tệ. Tuy nhiên, cần phải có trường hợp sử dụng như vậy, có lựa chọn thay thế tốt đẹp? – liang

3

Bạn có thể nhảy qua các vòng và sử dụng một thuộc tính bổ sung để xác định phần biến, nhưng đó sẽ là một chút công việc so với những gì nó sẽ tạo ra. Không có cách nào đơn giản để hoàn thành những gì bạn đang theo đuổi.

+0

Tôi đã xem xét ngắn gọn thuộc tính của riêng mình, nhưng tôi nghĩ rằng công việc phụ sẽ không biện minh cho công việc đã lưu. Đó là một vấn đề đơn giản về kết thúc của tôi về mọi thứ, nhưng không phải khi nó phải được biên soạn. – thepaulpage

Các vấn đề liên quan