public void Invoke(IExecutionContext context) { var instance = context.Pop(); var name = context.Pop() as String; var obj = instance as IDictionary <String, Object>; var result = default(Object); if (name != null && instance != null) { if (obj == null || !obj.TryGetValue(name, out result)) { AttachedProperties.TryFind(instance, name, out result); } } context.Push(result); }