मुझे ProxyGenerator.CreateInterfaceProxyWithTarget पर इसका उदाहरण प्रदान करके एक इंटरफ़ेस प्रॉक्सी करने के लिए कैसल डायनैमिक प्रॉक्सी का उपयोग करने की आवश्यकता है। मुझे यह भी सुनिश्चित करने की ज़रूरत है कि बराबर कॉल, गेटहाशकोड और टूस्ट्रिंग ठोस उदाहरण पर विधियों को हिट करता है, कि मैं गुजर रहा हूं, और मैं इसे काम नहीं कर सकता।कैसल डायनामिक प्रॉक्सी: इंटरफ़ेस को प्रॉक्सी करने पर प्रॉक्सी को बराबर कैसे करें?
using System;
using Castle.Core.Interceptor;
using Castle.DynamicProxy;
public interface IDummy
{
string Name { get; set; }
}
class Dummy : IDummy
{
public string Name { get; set; }
public bool Equals(IDummy other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return Equals(other.Name, Name);
}
public override bool Equals(object obj)
{
return Equals(obj as IDummy);
}
}
class Program
{
static void Main(string[] args)
{
var g = new ProxyGenerator();
IDummy first = new Dummy() {Name = "Name"};
IDummy second = new Dummy() {Name = "Name"};
IDummy firstProxy = g.CreateInterfaceProxyWithTarget(first, new ConsoleLoggerInterceptor());
IDummy secondProxy = g.CreateInterfaceProxyWithTarget(second, new ConsoleLoggerInterceptor());
Console.WriteLine(first.Equals(second));
Console.WriteLine(firstProxy.Equals(secondProxy));
}
}
internal class ConsoleLoggerInterceptor : IInterceptor
{
public void Intercept(IInvocation invocation)
{
Console.WriteLine("Invoked " + invocation.Method.Name);
}
}
DynamicProxy के साथ इस संभव है:
दूसरे शब्दों में, मैं इस छोटा सा नमूना दो बार True
मुद्रित करने के लिए है, जबकि वास्तव में यह True,False
प्रिंट करना चाहते हैं? कैसे ?
आप किस संस्करण का उपयोग कर रहे हैं? –
मैं स्पष्टीकरण के लिए धन्यवाद DynamicProxy2 2.1.1 – driis