【发布时间】:2016-12-03 18:59:26
【问题描述】:
我的类具有在 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" };
}
}
}
【问题讨论】:
-
我认为你可以创建新的 {prop1="value", prop2="value2"};
标签: c# dynamic properties castle-dynamicproxy