Как обнаружить, если Типом является сгенерированный DynamicProxy, не ссылаясь на замок DynamicProxy?

  • Профессиональный 2-й Выпуск
  • JSP я ветвь это, когда я был полным новичком и взял меня только от знания, что Java существовал надежному члену команды в скором времени

7
задан Simon 25 July 2019 в 11:29
поделиться

4 ответа

пока что у меня есть этот уродливый код

    private static bool IsDynamic(Type type)
    {
        try
        {
            var location = type.Assembly.Location;
            return false;
        }
        catch (NotSupportedException)
        {
            return true;
        }
    }
0
ответ дан 6 December 2019 в 19:40
поделиться
type.Assembly.FullName.StartsWith("DynamicProxyGenAssembly2")
10
ответ дан 6 December 2019 в 19:40
поделиться

Похоже, это работает для Касла:

private static bool IsDynamic(Type type)
{
    return type.Namespace == null;
}
0
ответ дан 6 December 2019 в 19:40
поделиться

Вы можете сделать так, чтобы ваш динамический тип реализовывал определенный интерфейс:

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);
3
ответ дан 6 December 2019 в 19:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: