2010-05-13 4 views
21

: o ama adı farklı bir dize ile, tekrar kullanmak istiyorum oldukça genel olduğundanC# Öznitelikler'in içinde değişkenleri kullanma Biz gibi bazı İyi Attributed DB koduna sahip

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

özniteliğin bir parçası. o işler const olmasını istediğiniz gibi görünen bir özellik var, o yüzden çalıştığımız beri:

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

Bu durum sahip bir const dize böylece kaldırarak, herhangi bir baz sınıflarında üzerine yazmak anlamına gelir hariç, tamam iş gibi görünüyor özgün olarak eklemek istediğimiz ve sorumu açığa çıkardığımız işlevsellik:

Öznitelik içeriklerini kalıtımla alabilmemiz ve saklayabilmemiz için bir özniteliğin içinde bir çeşit değişken kullanmanın bir yolu var mı?

cevap

19

Bir özniteliğin içindeki her şey derleme zamanında derleyici tarafından bilinmelidir. Değişkenler doğal olarak değişkendir (!), Bu yüzden özniteliklerde kullanılamaz.

Bir kod oluşturma aracı kullanabiliyorsanız, her türetilmiş sınıfa farklı (sabit) değerler dinamik olarak enjekte edebilirsiniz.

+0

Bu çok kötü, ama ben öyle düşündüm. Teşekkürler. – thepaulpage

+0

Bu gerçekten çok kötü. Ancak, böyle kullanım durumları olmalı, güzel alternatifler var mı? – liang

3

Çemberin içinden atlayabilir ve değişken kısmı tanımlamak için ek bir öznitelik kullanabilirsiniz; ancak bu, üretilecek olanla karşılaştırıldığında çok az iş olacaktır. Yaptığın şeyi başarmanın kolay bir yolu yok.

+0

Kendi öz niteliğimi kısaca düşündüm, ama ekstra çalışmanın kaydedilen çalışmayı haklı çıkaramayacağını düşünüyorum. Bu, işlerimin sonuyla ilgili basit bir problem, ancak derlenmesi gerektiğinde değil. – thepaulpage