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); }
// 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); }
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); }