मेरे आवेदन में मैंने पहले एक विधि को "एनोटेट" करने के लिए नियमित सी # विशेषताओं का उपयोग किया था। उदा .:एक विधि पर एकाधिक पहलू
[Foo(SomeKey="A", SomeValue="3")]
[Foo(SomeKey="B", SomeValue="4")]
public void TheMethod()
{
SpecialAttributeLogicHere();
}
क्या SpecialAttributeLogicHere() किया था, संजीदगी से सभी फू-गुण इस विशेष विधि एनोटेट कि को देखने के लिए किया गया था। यह तब (अपने आप पर), सभी चाबियों और मूल्यों के लिए अपना स्वयं का शब्दकोश बनायेगा।
अब मैं पोस्टशर्प में जाने की कोशिश कर रहा हूं, क्योंकि विशेष एट्रिब्यूट लॉजिक को एक पहलू में रखा जा सकता है (और विधि निकाय से हटाया गया है जो बहुत साफ है!), ऑनएन्ट्री के भीतर। Foo को एक पहलू से प्रतिस्थापित किया जाएगा जो OnMethodBoundaryAspect को बढ़ाता है।
मैं अभी भी यह निम्नलिखित तरीके से उपयोग करना चाहते हैं:
[Foo(SomeKey="A", SomeValue="3")]
[Foo(SomeKey="B", SomeValue="4")]
लेकिन अगर फू एक OnEntry, है इसका मतलब है कि "SpecialAttributeLogic" दो बार निष्पादित किया जाएगा। मुझे मूल रूप से प्रत्येक Foo() से सभी कुंजी और मानों को एक शब्दकोश में "इकट्ठा" करने की आवश्यकता होती है, जिसे मैं कुछ तर्क लागू करता हूं।
पोस्टशर्प के साथ यह (या सर्वोत्तम प्रथाओं) कैसे करें? धन्यवाद!
नीचे दिए गए मेरे उत्तर में काम करने का उदाहरण जोड़ा गया। –