2011-05-09 9 views
9

मैं यह सुनिश्चित करना चाहता हूं कि संकलन-समय पर एक ही कक्षा में दो इंटरफेस कभी नहीं पाए जाते हैं, AttributeUsage संकलन-समय पर कस्टम विशेषताओं की जांच कैसे करता है।संकलन समय पर परस्पर अनन्य इंटरफेस सुनिश्चित करें?

उदा .:

[InterfaceUsage(MutuallyExclusive = typeof(B))] 
interface A { 
    //... 
} 

interface B { 
    //... 
} 

class C : A, B { //should throw an error on compile time 
    //... 
} 

मैं स्पष्ट रूप से प्रतिबिंब के साथ कार्यावधि में ऐसा कर सकते हैं, लेकिन मैं एक संकलन समय समाधान में दिलचस्पी रखता हूँ।

मुझे लगता है कि शायद एक बॉक्स से बाहर नहीं है - लेकिन क्या एक जटिल विशेषता बनाने के लिए एक तरीका है जो संकलन समय पर चलाया जाता है, जैसे विशेषताएँ है?

+4

नियमित सी # कंपाइलर के साथ नहीं ... –

+3

आप एक FxCop नियम बना सकते हैं। – Steven

+0

पारस्परिक रूप से अनन्य इंटरफेस की आवश्यकता वाले उपयोग मामले को समझने के लिए उत्सुक ... –

उत्तर

4

उन्हें अलग-अलग कक्षाओं में बदलने के लिए एक अलग दृष्टिकोण हो सकता है।

1

समान हस्ताक्षर के साथ उन्हें दो विधियां देने के बारे में, लेकिन असंगत रिटर्न प्रकारों के बारे में कैसे?

+0

मैं इसे अधिक चेतावनी पर विचार करता हूं क्योंकि वे स्पष्ट रूप से इंटरफेस को कार्यान्वित कर सकते हैं। हालांकि मुझे पूरा यकीन है कि आप बाहरी उपकरण के बिना बेहतर नहीं कर सकते हैं। – ChaosPandion