Независимо от того, какой MetaObject вы возвращаете из (Bind), SetMember будет кэшироваться и повторно использоваться в этом случае. У вас есть 2 динамических сайта, которые делают наборы. Первый вызов кеширует результат в кэш-памяти второго уровня, который будет захвачен вторым сайтом, прежде чем попросить вас создать новое правило.
Так что любой возвращаемый MetaObject должен содержать дерево выражений, которое будет обновлять значение. Например, он должен сделать что-то вроде:
вернуть новый MetaObject (
Expression.AssignProperty (this.Expression, value.Expression),
Restrictions.TypeRestriction (this.Expression, this.Value.GetType ());