Есть ли способ вывести интерфейс из объекта на основе его типа. Например, если бы у меня был следующий объект:
public class Person
{
public string FirstName
{ get; set; }
public string LastName
{ get; set; }
}
Я хотел бы иметь возможность вывести этот интерфейс:
public interface IPerson
{
string FirstName
{ get; set; }
string LastName
{ get; set; }
}
Что я хотел бы сделать, так это иметь возможность создать общую фабрику прокси, используя Reflection.emit, которая придерживается предполагаемого интерфейса во время компиляции. Я знаю, что вместо этого я мог бы вернуть динамический объект со всеми свойствами объекта, но все это обрабатывается во время выполнения, а не во время компиляции.
Изменить
Еще немного пояснений к тому, чего я пытаюсь достичь. Я хочу создать прокси-класс, который имеет метод с сигнатурой примерно так:
public T GetProxyFor<U>(U SomeObject);
Таким образом, пользователь может вызвать GetProxyFor(People) и получить обратно объект PeopleProxy, который реализует свойства объекта People (или любого другого объекта). Таким образом, кто-то, использующий этот код, может вызвать PeopleProxy.LastName, и это будет успешно скомпилировано, но вызов PeopleProxy.Age приведет к ошибке при компиляции, поскольку он не существует.
Я новичок в отражении и излучении, поэтому то, что я хочу, может оказаться невозможным.