コード例 #1
0
        public static bool BuildConnectionString(IntPtr handle, ref string connectionString)
        {
            IntPtr dataInitializePointer;
            IntPtr dataLinksPointer                = CoCreateInstance(DBO.CLSID_DataLinks, IntPtr.Zero, 0x17, DBO.IID_IDataInitialize);
            object dbPromptInitializeObject        = Marshal.GetTypedObjectForIUnknown(dataLinksPointer, typeof(IDBPromptInitialize));
            IDBPromptInitialize dbPromptInitialize = (IDBPromptInitialize)dbPromptInitializeObject;

            dbPromptInitialize.PromptDataSource(IntPtr.Zero, handle, 2, 0, IntPtr.Zero, null,
                                                DBO.IID_IUnknown, out dataInitializePointer);
            if (dataInitializePointer != IntPtr.Zero)
            {
                IDataInitialize dataInitialize = (IDataInitialize)Marshal.GetTypedObjectForIUnknown(dataLinksPointer, typeof(IDataInitialize));
                dataInitialize.GetInitializationString(dataInitializePointer, 1, out connectionString);
                return(true);
            }
            return(false);
        }
コード例 #2
0
 // Methods
 public DialogResult Show(IntPtr parent)
 {
     try
     {
         CDataLink       link         = new CDataLink();
         Guid            riid         = new Guid("0C733A8B-2A1C-11CE-ADE5-00AA0044773D");
         IDataInitialize initialize   = (IDataInitialize)link;
         object          ppDataSource = null;
         initialize.GetDataSource(null, 1, this.connectionString, ref riid, out ppDataSource);
         ((IDBPromptInitialize)link).PromptDataSource(null, parent, 0x12, 0, 0, null, ref riid, ref ppDataSource);
         initialize.GetInitializationString(ppDataSource, true, out this.connectionString);
     }
     catch (COMException)
     {
         return(DialogResult.Cancel);
     }
     return(DialogResult.OK);
 }
コード例 #3
0
        private static NodeObject ConvertObject(NodeObjectData objectData, GameProjectLoadResult gResult, Dictionary <int, VisualObject> objectDictionary)
        {
            NodeObject instance = Activator.CreateInstance(Services.ProjectsService.DataModelManager.GetViewModelType(objectData.GetType()), true) as NodeObject;

            if (instance == null)
            {
                return((NodeObject)null);
            }
            instance.IsAutoSize = objectData.IsAutoSize;
            foreach (PropertyAccessorHandler property1 in objectData.GetProperties())
            {
                string propertyName = property1.PropertyName;
                if (!(propertyName == "Children"))
                {
                    PropertyInfo property2 = instance.GetType().GetProperty(propertyName);
                    object       obj1      = property1.GetValue((object)objectData, (object[])null);
                    if (property2 != (PropertyInfo)null && obj1 != null)
                    {
                        object obj2 = obj1;
                        if (!property2.PropertyType.Equals(property1.PropertyType))
                        {
                            if (!(obj1 is IDataConvert))
                            {
                                throw new InvalidCastException(string.Format("Property type are not same, the item is {0}, ViewType is {1}, DataType is {2}, Can use IDataConvert interface to convert.", (object)instance.GetType().Name, (object)property2.PropertyType.Name, (object)property1.PropertyType.Name));
                            }
                            obj2 = ((IDataConvert)obj1).CreateViewModel();
                        }
                        property2.SetValue((object)instance, obj2, (object[])null);
                    }
                }
            }
            if (!objectDictionary.ContainsKey(instance.ActionTag))
            {
                objectDictionary.Add(instance.ActionTag, (VisualObject)instance);
            }
            IDataInitialize dataInitialize = (IDataInitialize)objectData;

            if (dataInitialize != null)
            {
                dataInitialize.DataInitialize((VisualObject)instance);
            }
            Type type = instance.GetType();

            if (gResult.TypeIndex.ContainsKey(type))
            {
                if (instance.ObjectIndex > gResult.TypeIndex[type])
                {
                    gResult.TypeIndex[type] = instance.ObjectIndex;
                }
            }
            else
            {
                gResult.TypeIndex.Add(type, instance.ObjectIndex);
            }
            if (objectData.Children != null)
            {
                foreach (NodeObjectData child in objectData.Children)
                {
                    NodeObject nodeObject = GameProjectLoader.ConvertObject(child, gResult, objectDictionary);
                    instance.Children.Add(nodeObject);
                }
            }
            instance.IsAutoSize = false;
            return(instance);
        }