protected override bool TryGetExtraValue(SymbolId key, out object value) { if (key == _viewSymbol) { value = _view; return(true); } var property = _viewType.GetProperty(key.ToString()); if (property != null) { value = property.GetValue(_view, null); return(true); } var field = _viewType.GetField(key.ToString()); if (field != null) { value = field.GetValue(_view); return(true); } if (_view.TryGetViewData(key.ToString(), out value)) { return(true); } value = null; return(false); }
protected override bool TryGetExtraValue(SymbolId key, out object value) { var property = _viewType.GetProperty(key.ToString()); if (property != null) { value = property.GetValue(_view, null); return(true); } var field = _viewType.GetField(key.ToString()); if (field != null) { value = field.GetValue(_view); return(true); } var method = _viewType.GetMethod(key.ToString()); if (method != null) { var parameterTypes = method.GetParameters().Select(p => p.ParameterType).ToList(); parameterTypes.Add(method.ReturnType); value = Delegate.CreateDelegate( CompilerHelpers.MakeCallSiteDelegateType(parameterTypes.ToArray()), _view, key.ToString()); return(true); } if (_view.TryGetViewData(key.ToString(), out value)) { return(true); } value = null; return(false); }