2009-09-16 7 views
5

मैं एक डिज़ाइन को कार्यान्वित कर रहा हूं जहां मेरी परत क्लाइंट और सर्वर के बीच बैठेगी, और जो भी ऑब्जेक्ट मैं सर्वर से प्राप्त करता हूं, मैं इसे पारदर्शी प्रॉक्सी में लपेटूंगा और क्लाइंट को दूंगा, इस तरह मैं एक रख सकता हूं ऑब्जेक्ट में क्या बदल गया है इसका ट्रैक, इसलिए इसे वापस सहेजते समय, मैं केवल बदली गई जानकारी भेजूंगा।महल गतिशील प्रॉक्सी निर्माण

मैंने महल गतिशील प्रॉक्सी, लिनफू को देखा, हालांकि वे प्रॉक्सी प्रकार उत्पन्न कर सकते हैं, लेकिन वे मौजूदा ऑब्जेक्ट्स नहीं ले सकते हैं और उन्हें इसके बजाय लपेट सकते हैं।

सोच यद्यपि आप को ध्यान में रखना है इसके संभावित इन चौखटे के साथ क्या करना है, या क्या कोई अन्य चौखटे है कि इस सक्षम ...

उत्तर

4

कैसल गतिशील प्रॉक्सी 3.x या बाद में ऐसा कर सकते हैं, कि यह केवल आभासी तरीकों को रोक सकता है, इसलिए यह एक आदर्श अमूर्त नहीं है।

+0

प्रासंगिक तरीकों "WithTarget" के साथ समाप्त '' प्रॉक्सी जेनरेटर 'वर्ग, उदाहरण के लिए 'CreateClassProxyTypeWithTarget' – Nathan

5

हम स्टेटलेस इकाइयों का उपयोग करते हैं, और एएसपी.नेट ग्रिड व्यू के व्यवहार के कारण मुझे प्रॉक्सी बनाने की आवश्यकता होती है जो केवल मौजूदा ऑब्जेक्ट को लपेटती है।

public class ForwardingInterceptor : IInterceptor 
{ 
    private object target; 

    private Type type; 

    public ForwardingInterceptor(Type type, object target) 
    { 
     this.target = target; 
    } 

    public void Intercept(IInvocation invocation) 
    { 
     invocation.ReturnValue = invocation.Method.Invoke(this.target, invocation.Arguments); 
    }  
} 

तो फिर तुम बस आवरण प्रॉक्सी बना सकते हैं::

मैं एक इंटरसेप्टर जो लक्ष्य उदाहरण इस तरह से रहता है बनाया पर

this.proxyGenerator.CreateClassProxy(type, new ForwardingInterceptor(type, target));