有什么方法可以根据对象的类型推断出接口。例如,如果我有以下对象:
public class Person
{
public string FirstName
{ get; set; }
public string LastName
{ get; set; }
}
我希望能够推断出这个接口:
public interface IPerson
{
string FirstName
{ get; set; }
string LastName
{ get; set; }
}
我想做的是能够创建一个通用代理工厂,使用反射.emit,它在编译时遵守推断的接口。我知道我可以改为返回具有所有对象属性的动态对象,但这都是在运行时与编译时处理的。
编辑
对我想要实现的目标进行更多解释。我想创建一个代理类,它有一个带有这样签名的方法:
public T GetProxyFor<U>(U SomeObject);
这样,用户可以调用 GetProxyFor(People) 并取回一个 PeopleProxy 对象,该对象将实现 People 对象(或任何其他对象)的属性。这样,使用此代码的人可以调用 PeopleProxy.LastName 并且这将成功编译,但是对 PeopleProxy.Age 的调用会在编译时导致错误,因为它不存在。
我对反射和发射相当陌生,所以我想要的可能是不可能的。