मैं एक ऐसी सुविधा बनाने की कोशिश कर रहा हूं जो वर्ग विशेषता के आधार पर पंजीकृत वर्ग में कुछ इंटरसेप्टर जोड़ेगी। यह मेरी सुविधा है:

public class MyFacility : AbstractFacility
{
     protected override void Init()
    {
        this.Kernel.ComponentRegistered += (s, h) =>
        {
            if (h.ComponentModel.Implementation.GetCustomAttributes(typeof(MyAttribute), false).Length > 0)
            {
                h.ComponentModel.Interceptors.Add(InterceptorReference.ForType<MyInterceptor>());
            }
        }
    }
}

लेकिन इस तरह, जब मैं एक वर्ग विधि में this कीवर्ड का उपयोग करता हूं तो यह लक्ष्य वर्ग को संदर्भित करता है न कि प्रॉक्सी वर्ग और इससे कुछ ढांचे का उपयोग होता है जो मैं ठीक से काम नहीं करता हूं।

मुझे एक सुविधा के साथ वही प्रॉक्सी बनाने की ज़रूरत है जो ProxyGenerator.CreateClassProxy<MyClass>() विधि से उत्पन्न होती है।

इसे कैसे प्राप्त किया जा सकता है?

0
Gigitsu 17 जुलाई 2011, 16:20
क्या आप और कोड दिखा सकते हैं? क्या वह घटक है जिसे आप इंटरफ़ेस या कक्षा पंजीकृत कर रहे हैं?
 – 
svick
17 जुलाई 2011, 16:30
मैं जिस घटक को पंजीकृत कर रहा हूं वह एक इंटरफ़ेस है। थी विंडसर इंस्टालेशन: _wc = new WindsorContainer (); _wc.AddFacility<सुविधा>(); _wc.Register (घटक। के लिए <प्राधिकरण> ()); _wc.Register (घटक। के लिए ()। कार्यान्वित द्वारा <सेवा> ());
 – 
Gigitsu
17 जुलाई 2011, 16:47

1 उत्तर

सबसे बढ़िया उत्तर

कक्षा को अपने घटक पर एक सेवा के रूप में बेनकाब करें।

container.Register(
   Component.For<SomeClass,ISomeInterface>().Lifestyle.Whatever.Interceptors<SomeInterceptor>()
);
1
Krzysztof Kozmic 18 जुलाई 2011, 01:44
मैं कक्षा को सेवा के रूप में कैसे उजागर कर सकता हूं? क्या आप कृपया एक उदाहरण पोस्ट कर सकते हैं?
 – 
Gigitsu
17 जुलाई 2011, 16:45