Type DoGetType() { var pi = underlying_member as PropertyInfo; if (pi != null) { return(pi.PropertyType); } var ei = underlying_member as EventInfo; if (ei != null) { return(ei.EventHandlerType); } if (UnderlyingSetter != null) { return(UnderlyingSetter.GetParameters()[1].ParameterType); } if (UnderlyingGetter != null) { if (IsAttachable) { return(UnderlyingGetter.ReturnType); } else { return(UnderlyingGetter.GetParameters()[0].ParameterType); } } return(typeof(object)); }
public virtual object GetValue(object instance) { if (instance == null) { throw new ArgumentNullException("instance"); } if (member is XamlDirective) { throw new NotSupportedException(String.Format("not supported operation on directive member {0}", member)); } if (UnderlyingGetter == null) { throw new NotSupportedException(String.Format("Attempt to get value from write-only property or event {0}", member)); } return(UnderlyingGetter.Invoke(instance, new object [0])); }