我的类具有在dll中实现的属性(我无法更改实现,因为我没有庞大的源代码)。我无法将属性Name
替换为继承类,因为项目使用了数千行代码(Ctrl + h无效)。有人告诉我,我的问题可以通过Castle和Unity的动态属性拦截来解决。但我找不到任何可行的小例子。你能说明一下如何实现它吗?我读到Castle动态代理只截获虚拟方法。是否可以使用接口拦截非虚方法?
namespace DynamicInterception
{
// Placed int first dll
public class Cargo
{
public string Name { get; set; }
}
//Placed in second dll
public class Wagon
{
public Cargo Cargo { get; set; }
}
class Program
{
static void Main(string[] args)
{
Wagon wagon = new Wagon();
wagon.Cargo = new Cargo() { Name = "Test" };
}
}
}
答案 0 :(得分:0)
是的,使用Castle Dynamic Proxy,如果成员是接口的一部分,您可以拦截类的非虚拟成员。查看documentation(特别是IInterceptor
部分),如果您遇到问题,请使用一些示例代码展示您遇到的问题,开始一个新问题。