Dot-Net

如何在不引用 Castle DynamicProxy 的情況下檢測 Type 是否是生成的 DynamicProxy?

  • July 25, 2019

我正在使用城堡 DynamicProxy 並且想知道是否有一種方法可以在不引用 Castle DynamicProxy 的情況下檢測類型是否為代理?

因此,當我使用 Castle DynamicProxy 作為範例時,我想要適用於任何記憶體生成類型的程式碼。

var generator = new ProxyGenerator();

var classProxy = generator.CreateClassProxy<Hashtable>();
Debug.WriteLine(classProxy.GetType().Is....);

var interfaceProxy = generator.CreateInterfaceProxyWithoutTarget<ICollection>();
Debug.WriteLine(interfaceProxy.GetType().Is....);

謝謝

type.Assembly.FullName.StartsWith("DynamicProxyGenAssembly2")

你可以讓你的動態類型實現一個特定的介面:

public interface IDynamicProxy { }

...

ProxyGenerator generator = new ProxyGenerator();

var classProxy = generator.CreateClassProxy(typeof(Hashtable), new[] {typeof(IDynamicProxy)});
Debug.WriteLine(classProxy is IDynamicProxy);


var interfaceProxy = generator.CreateInterfaceProxyWithoutTarget(typeof(ICollection), new[] { typeof(IDynamicProxy) });
Debug.WriteLine(interfaceProxy is IDynamicProxy);

引用自:https://stackoverflow.com/questions/1193366