В проекте я использую Castle Dynamic Proxy, чтобы обернуть весь код, выполняемый фасадом, в блоки try / catch (звучит странно? Объяснено здесь ).Это работает нормально, но чтобы убедиться, что все вызовы методов перехвачены, я выкидываю исключение, когда сталкиваюсь с чем-то не виртуальным, используя метод NonProxyableMemberNotification
интерфейса IProxyGenerationHook
:
public void NonProxyableMemberNotification(Type type, MemberInfo memberInfo)
{
throw new InvalidOperationException(string.Format(
"Proxy failure. {0} {1} in {2} is not virtual.",
memberInfo.MemberType, memberInfo.Name, memberInfo.DeclaringType));
}
к великому учебнику Кшиштофа Кочича ; Классы объектов являются особыми случаями, и по умолчанию DynamicProxy просто игнорирует их .Проблема в том, что в моем случае они не игнорируются, как видно из следующего примера MemberInfo
data:
Есть что-то, что я здесь пропустил?NonProxyableMemberNotification
должен запускаться методами Object?
Я использую .Net 3.5, VS2010 и Castle Core версии 2.5.2, и я не переопределяю Object.GetType()
в моем XmlDocumentBackend
.