Esempio n. 1
0
        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]));
 }