Beispiel #1
0
        /// <summary>
        /// Method that sets the Value property by fixing up any
        /// values based on GetProperty() rules. This means if you pass
        /// an ComArray the raw array will be unpacked and stored for example.
        /// </summary>
        public void SetValue(object value)
        {
            object         obj    = this;
            wwDotNetBridge bridge = new wwDotNetBridge();

            bridge.SetProperty(obj, "Value", value);
        }
Beispiel #2
0
        /// <summary>
        /// Assigns an enum value that is based on a numeric (flag) value
        /// or a combination of flag values.
        /// </summary>
        /// <param name="enumType">Enum type name (System.Windows.Forms.MessageBoxOptions)</param>
        /// <param name="enumValue">numeric flag value to set enum to</param>
        public void SetEnumFlag(string enumType, int enumValue)
        {
            if (string.IsNullOrEmpty(enumType))
            {
                throw new ArgumentNullException("Enum type is not set.");
            }

            var  bridge = new wwDotNetBridge();
            Type type   = bridge.GetTypeFromName(enumType);

            Value = Enum.ToObject(type, enumValue);
        }
        public static int CreatewwDotnetBridgeByRef([MarshalAs(UnmanagedType.IUnknown)] ref object instance)
        {
            try
            {
                instance = new wwDotNetBridge();
            }
            catch (Exception ex)
            {
                instance = null;
                return(ex.HResult);
            }

            return(0);
        }
Beispiel #4
0
        /// <summary>
        /// Invokes a static method with the passed parameters and sets the Value property
        /// from the result value.
        /// </summary>
        /// <param name="typeName"></param>
        /// <param name="method"></param>
        /// <param name="parms"></param>
        public void SetValueFromInvokeStaticMethod(string typeName, string method, ComArray parms)
        {
            wwDotNetBridge bridge = new wwDotNetBridge();
            var            list   = new List <object>();

            if (parms.Instance != null)
            {
                foreach (object item in parms.Instance as IEnumerable)
                {
                    list.Add(item);
                }
            }

            Value = bridge.InvokeStaticMethod_Internal(typeName, method, list.ToArray());
        }
Beispiel #5
0
        /// <summary>
        /// Assigns an enum value to the value structure. This
        /// allows to pass enum values to methods and constructors
        /// to ensure that method signatures match properly
        /// </summary>
        /// <param name="enumValue">full type and value name. Example: System.Windows.Forms.MessageBoxOptions.OK</param>
        public void SetEnum(string enumValue)
        {
            if (string.IsNullOrEmpty(enumValue))
            {
                throw new ArgumentNullException("Enum type is not set.");
            }

            int at = enumValue.LastIndexOf('.');

            if (at == -1)
            {
                throw new ArgumentException("Invalid format for enum value.");
            }

            string type     = enumValue.Substring(0, at);
            string property = enumValue.Substring(at + 1);

            var bridge = new wwDotNetBridge();

            Value = bridge.GetStaticProperty(type, property);
        }
Beispiel #6
0
        /// <summary>
        /// Returns a reference to an wwDotNetBridge instance. This instance is used
        /// instead of one create in ClrHost.dll, because COM InterOp runs in its own
        /// AppDomain in VFP. We make sure we create all controls in the AppDomain
        /// that contains the WinForm container.
        /// </summary>
        /// <returns>Store the wwDotNetBridge instance in the oDotNetBridge property</returns>
        public Object CreateBridge()
        {
            var bridge = new wwDotNetBridge();

            return(bridge);
        }
Beispiel #7
0
        /// <summary>
        /// Sets the Value property from a CreateInstance call. Useful for
        /// value types that can't be passed back to FoxPro.
        /// </summary>
        /// <param name="typeName"></param>
        /// <param name="parms"></param>
        protected void SetValueFromCreateInstance_Internal(string typeName, object[] parms)
        {
            wwDotNetBridge bridge = new wwDotNetBridge();

            Value = bridge.CreateInstance_Internal(typeName, parms);
        }
Beispiel #8
0
        public object GetValue()
        {
            var bridge = new wwDotNetBridge();

            return(bridge.GetProperty(this, "Value"));
        }
Beispiel #9
0
        /// <summary>
        /// Sets the Value property from a method call that passes it's positional arguments
        /// as an array.
        /// </summary>
        /// <param name="objectRef">Object instance</param>
        /// <param name="method">Method to call</param>
        /// <param name="parms">An array of the parameters passed (use ComArray and InvokeMethod)</param>
        public void SetValueFromInvokeMethod(object objectRef, string method, object[] parms)
        {
            wwDotNetBridge bridge = new wwDotNetBridge();

            Value = bridge.InvokeMethodWithParameterArray(objectRef, method, parms);
        }
Beispiel #10
0
        public void SetValueFromEnum(string enumType, string enumName)
        {
            wwDotNetBridge bridge = new wwDotNetBridge();

            Value = bridge.GetStaticProperty(enumType, enumName);
        }
Beispiel #11
0
        /// <summary>
        /// Sets the value property from a static property retrieved from .NET.
        /// Useful to transfer value in .NET that are marshalled incorrectly
        /// in FoxPro such as Enum values (that are marshalled as numbers)
        /// </summary>
        /// <param name="typeName">Full type name as a string - can also be an Enum type</param>
        /// <param name="property">The static property name</param>
        public void SetValueFromStaticProperty(string typeName, string property)
        {
            wwDotNetBridge bridge = new wwDotNetBridge();

            Value = bridge.GetStaticProperty(typeName, property);
        }
Beispiel #12
0
        /// <summary>
        /// Sets the Value property from a property retrieved from .NET
        /// Useful to transfer value in .NET that are marshalled incorrectly
        /// in FoxPro such as Enum values (that are marshalled as numbers)
        /// </summary>
        /// <param name="objectRef">An object reference to the base object</param>
        /// <param name="property">Name of the property</param>
        public void SetValueFromProperty(object objectRef, string property)
        {
            wwDotNetBridge bridge = new wwDotNetBridge();

            Value = bridge.GetProperty(objectRef, property);
        }