을 보려면이 링크에서 살펴보고, 그들이 인텔리 센스를 지원하는지 여부와 만약 그렇다면 ... 어떻게 할 수 있습니까?
은 음, DynamicProxy 클래스가 작동하는 방법 을 설명, 당신은 유형 안전, 어떻게 그들이 그렇게 잘 IntelliSense를 작동 할 수있는 이유에 대한 명확한 이해를해야합니다.
먼저 DynamicProxy가 실제로 무엇인지 이해해 봅시다. 프록시 클래스는 다른 클래스를 대신하여 멤버 호출을 처리하는 클래스입니다. 이것은 상속 (가장 일반적인) 또는 구성을 통해 이루어집니다.
public class Customer
{
public virtual string Name { get; set; }
// etc...
}
public class CustomerProxy : Customer
{
public override string Name
{
get
{
// Do additional functionality...
return base.Name;
}
set
{
// Do additional functionality...
base.Name = value;
}
}
}
두 (2) 주요 기능이 적절하게 작동, 상속 및 다형성에 중요한 역할을 : 당신이한다면 그래서, 프록시 클래스를 손으로 쓰기, 여기 모습 수있는 것입니다. 따라서 Customer
클래스를 원활하게 사용하려면 ProxyGenerator
은 CustomerProxy
클래스의 인스턴스를 만들고, Customer
유형으로 반환하면됩니다. 기본적으로 Customer customer = new CustomerProxy();
을 수행하는 것과 동일한 작업입니다. "동적"부분은 실제로 .NET dynamic
키워드와 관련이 없지만 "런타임"은 응용 프로그램이 실행되는 동안 런타임에 프록시 클래스가 생성된다는 것을 의미하기 때문에 "런타임"으로 읽어야합니다. 컴파일 타임에.그것은이, 그것은 DynamicProxy
가 무엇의 간단한 버전의 System.Reflection.Emit
를 사용 않는 방법 아, 그리고 경우에 당신이 궁금합니다. 다른 프레임 워크는 이러한 프록시 클래스를 생성 할 때 다른 기능을 제공합니다. 예를 들어, Castle Windsor의 DynamicProxy에서는 Mixins를 만들고 이러한 프록시 클래스에 추가 인터페이스를 적용 할 수 있습니다. 즉 과 같이 Customer
클래스 자체가 ISomeInterface
을 구현하지 않았더라도 생성 된 프록시 클래스는 다음과 같이 표시 될 수 있습니다. Castle의 DynamicProxy (http://kozmic.net/dynamic-proxy-tutorial/)에 대한 훌륭한 자료입니다. 이러한 기능에 대한 다양한 기능과 사용 사례를 거칩니다.