Beispiel #1
0
 public static System.Type OutletDataType(this MemberInfo member, IOOutletType outletType)
 {
     switch (member.MemberType) {
         case MemberTypes.Method:
             if (outletType == IOOutletType.Input) {
                 var paramsInfo = ((MethodInfo)member).GetParameters();
                 if (paramsInfo.Length != 1) {
                     throw new System.ArgumentException(
                         System.String.Format("{0}.{1} must accept exactly one parameter to be a valid operator input",
                             ((MethodInfo)member).DeclaringType.Name,
                             ((MethodInfo)member).Name)
                     );
                 }
                 return paramsInfo[0].ParameterType;
             } else if (outletType == IOOutletType.Output) {
                 return ((MethodInfo)member).ReturnType;
             } else {
                 throw new System.ArgumentException("Invalid outlet type");
             }
         case MemberTypes.Field:
             return ((FieldInfo)member).FieldType;
         case MemberTypes.Property:
             return ((PropertyInfo)member).PropertyType;
     default:
             throw new System.ArgumentException("OutletDataType can only be used with FieldInfo, MethodInfo, or PropertyInfo");
     }
 }
Beispiel #2
0
        public static System.Type OutletDataType(this MemberInfo member, IOOutletType outletType)
        {
            switch (member.MemberType)
            {
            case MemberTypes.Method:
                if (outletType == IOOutletType.Input)
                {
                    var paramsInfo = ((MethodInfo)member).GetParameters();
                    if (paramsInfo.Length != 1)
                    {
                        throw new System.ArgumentException(
                                  System.String.Format("{0}.{1} must accept exactly one parameter to be a valid operator input",
                                                       ((MethodInfo)member).DeclaringType.Name,
                                                       ((MethodInfo)member).Name)
                                  );
                    }
                    return(paramsInfo[0].ParameterType);
                }
                else if (outletType == IOOutletType.Output)
                {
                    return(((MethodInfo)member).ReturnType);
                }
                else
                {
                    throw new System.ArgumentException("Invalid outlet type");
                }

            case MemberTypes.Field:
                return(((FieldInfo)member).FieldType);

            case MemberTypes.Property:
                return(((PropertyInfo)member).PropertyType);

            default:
                throw new System.ArgumentException("OutletDataType can only be used with FieldInfo, MethodInfo, or PropertyInfo");
            }
        }
Beispiel #3
0
 public IOOutlet(MemberInfo member, IOOutletType outletType)
 {
     Member   = member;
     DataType = member.OutletDataType(outletType);
     Type     = outletType;
 }
Beispiel #4
0
 public IOOutlet(MemberInfo member, IOOutletType outletType)
 {
     Member = member;
     DataType = member.OutletDataType(outletType);
     Type = outletType;
 }