2008-11-24 29 views
6

Bir koşullu değil varolan bir öznitelik var mı, yoksa Koşullu özniteliği, yalnızca değil tanımlanmışsa bu yöntemi içeren bir yöntemi kullanmak için bir yol var mı? sembol SILVERLIGHT varlığı söz yöntem dahil edilmeyecektirSystem.Diagnostics.ConditionalAttribute öğesinin bir tersi var mı?

[Conditional("!SILVERLIGHT")] 
private void DoStuffThatSilverlightCant() {...} 

Öyle ki: aradığım Ne

bu gibi çalışır bir şeydir.

Basit bir #ifdef kullanmak istemememin nedeni, her bir çağrıyı bir #ifdef'a sarmak zorunda kalmadan, arama deyimlerini kaldıran derleyiciden faydalanabileceğim.

+0

Bu soruya yazdığım gibi, eğer mevcutsa, yapmaya çalıştığım şey için gerçekten yararlı olmazdı. Ama yine de iyi bir soru gibi görünüyor. – MojoFilter

cevap

8

Güncelleştirme: Aşağıdaki kod parçacığı yalnızca #if çok pratik olmayan her arama dosyasında çalışıyorsa çalışır. Ancak ne yapılabilirdi

#if !SILVERLIGHT 
#define NOT_SILVERLIGHT 
#endif 

[Conditional("NOT_SILVERLIGHT")] 
private void DoStuffThatSilverlightCant() {...} 

, o irade/gerekli sembolü define (bu durumda NOT_SILVERLIGHT) kullanıyorsanız olursa olsun platformu için bir yapı yapılandırma sahip olmaktır.

+0

Yalnızca bu yöntemi bildirdiğiniz dosyada çalışır. Küresel bir çözüm değil – JaredPar

+0

Bu oldukça iyi bir fikir. Bu kesinlikle benim için olmadı. – MojoFilter

+0

@Jared: Ayakta durdum. Tanımlamanın olması gereken tek yer, işlev bildirgesiyle yapılmıştı ve çağrılar optimize edildi. Genellikle ConditionalAttribute'u/define ile kullanırım. – Coincoin

İlgili konular