7

Castle DynamicProxy を使用していますが、Castle DynamicProxy を参照せずに Type がプロキシであるかどうかを検出する方法があるかどうか疑問に思っていましたか?

そのため、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....);

ありがとう

4

4 に答える 4

10
type.Assembly.FullName.StartsWith("DynamicProxyGenAssembly2")
于 2009-07-29T00:25:37.050 に答える
3

動的型に特定のインターフェイスを実装させることができます。

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);
于 2009-08-31T20:49:17.817 に答える
0

これはCastleで機能しているようです:

private static bool IsDynamic(Type type)
{
    return type.Namespace == null;
}
于 2009-07-28T23:36:09.833 に答える
0

これまでのところ、私はこの醜いコードを持っています

    private static bool IsDynamic(Type type)
    {
        try
        {
            var location = type.Assembly.Location;
            return false;
        }
        catch (NotSupportedException)
        {
            return true;
        }
    }
于 2009-07-28T13:43:58.650 に答える