【发布时间】:2013-07-03 01:31:08
【问题描述】:
我想问一下是否有一个库允许在运行时生成接口的实现,并具有如下所示的一些附加功能。
假设我有这样的界面:
interface ICustomer
{
string Name {get;set;}
string IAddress { get;set; }
}
interface IAddress
{
string Street {get;set;}
}
我想做这样的事情:
ICustomer customer = someLibrary.Create<ICustomer>(bool createSubObjects)
Create<T>() 方法会在运行时创建这样的实现:
class RuntimeCustomer : NotifyPropertyChanged,ICustomer
//NotifyPropertyChanged would be hand written class
{
string name;
IAddress address = new RuntimeAddress();
//if createSubObjects == false then `IAddress address = null`
public string Name
{
get { return name; }
set { SetProperty(ref name, value); }
}
public IAddress Address
{
get { return address; }
set { SetProperty(ref address, value) }
}
}
class RuntimeAddress : NotifyPropertyChanged, IAddress
{
string street;
public string Street
{
get { return street; }
set { SetProperty(ref,street, value) }
}
}
有什么想法吗?
【问题讨论】:
-
@jure 您能否说明在这种情况下如何使用它?我之前在看Castle和LinFu,但没有发现它对那个案例有用
标签: c# mvvm castle-windsor interceptor proxy-classes