2008-09-16 36 views
1

DSL projemde, etki alanı sınıfımdaki özelliklere bağlı bir dizi dekoratörün olduğu bir şekildeyim. Ancak, ieach dekoratörünün bir DisplayName özelliği (anlamlı bir değere ayarlanmış) olmasına rağmen, oluşturulan DSL projesinde görünmez. (Ben, t4 dosyalarını yeniden oluşturmayı tercih etmedim.)Visual Studio DSL (Etki Alanı Özel Dil) Araçları'nda dekoratör için ekran adı nasıl eklenir?

Her bir özellik için, görüntülemek istediğim değer olarak yalnızca görünen adı olan veya başka bir şekilde kullanabileceğim başka bir dekoratör oluşturmam gerekir mi? Şimdi anlamayacak mısın?

cevap

1

Dekoratör için bir görüntü adında, oluşturulan DSL'deki öğenin "Örnek = a_değer" olarak görünmesini istediğinizi, burada a_değerinin gerçek değer olduğunu ve Örnek'in özellik adı olduğunu varsayalım.

Geçmişte bununla yaptığım şey, göz atılabilir olmayan ve dekoratörün gerçekte işaret ettiği ikinci özellik olan "ExampleDisplay" i oluşturmaktır. Daha sonra ExampleDisplay öğesinin Kind özelliğini "Hesaplanmış" olarak ayarlıyorum. Daha sonra, araç kitinin kısmi sınıfta yapabileceğiniz dekoratörü görüntülemek için çağırmaya çalıştığı yöntemi sağlamanız gerekir. Eğer Özellikler penceresini kullanmak zorunda DSL şemasında özelliğini ayarlamak iyi bir yol alamadım olarak

partial class ExampleElement 
{ 
    string GetExampleDisplayValue() 
    { 
     return "Example : " + this.Example; 
    } 
} 

Bu ideal değildir. (Altta yatan mülkün güncellemesine bağlı kalmazsanız, zaman zaman özellik penceresinden gecikme olur). Gerçek DSL araç setinin yapabildiği GUI'de kaygan düzenleme yapmak ancak nasıl olduğunu anlamadım.

Henüz yapmadıysanız, VSX forums sorgusuna değer.

+0

İyi cevap, bu mükemmel değil ama bundan hoşlanmadım! Teşekkürler. –