У меня есть структура отслеживания изменений, которая отслеживает изменения, внесенные в объекты домена на клиенте.Он использует Castle.Windsor в качестве инструмента для создания прокси-объектов.После того, как я изменил Castle на версию 3.0, вызовы свойств внутри методов, которые не перехвачены, больше не пересылаются целевому объекту.
диаграмма последовательности http://www.pictureupload.de/originals/pictures/200312135214_ct.png
ChangeTracker - мой собственный класс, которыйобрабатывает отслеживание изменений, внесенных во внутренний объект.
Используется пользовательский ProxyGenerationHook, который корректно работал с Castle 2.5:
private sealed class ProxyGenerationHook : IProxyGenerationHook
{
public void MethodsInspected()
{ }
public void NonProxyableMemberNotification(Type type, MemberInfo memberInfo)
{ }
public bool ShouldInterceptMethod(Type type, MethodInfo methodInfo)
{
if (methodInfo == null)
{
throw ExceptionBuilder.ArgumentNull("methodInfo");
}
string methodName = methodInfo.Name;
bool result = methodName.StartsWith("set_", StringComparison.OrdinalIgnoreCase) ||
methodName.StartsWith("get_", StringComparison.OrdinalIgnoreCase);
return result;
}
}
Используемый класс домена:
public class Person
{
public virtual int Id { set; get; }
public virtual string Name { set; get; }
protected virtual int Age { set; get; }
public void SetAgeTo(int value)
{
Age = value;
}
}
Это теперь предполагаемое поведение или это ошибка Касла 3.0?