/// <summary> /// Sets the outlook prop val. /// </summary> /// <param name="oItem">The o item.</param> /// <param name="propName">Name of the prop.</param> /// <param name="val">The val.</param> /// <returns></returns> public bool SetOutlookPropVal(object oItem, string propName, object val) { bool retVal = false; if (this.InvokeRequired) { Func <object, string, object, bool> func = this.SetOutlookPropVal; retVal = (bool)this.Invoke(func, oItem, propName, val); } else { Type outlookType = GetOutlookTypeForComObject(oItem); if (outlookType == null) { throw new ArgumentException("oItem invalid outlook type"); } PropertyInfo propInfo = outlookType.GetProperty(propName); if (propInfo == null) { throw new NullReferenceException("prop with name " + propName + " not found"); } //Пытаемся преобразовать значение c типом заместителя в outlook тип OutlookItem outlookItem = val as OutlookItem; if (outlookItem != null) { val = outlookItem.InnerOutlookObject; } propInfo.SetValue(oItem, val, null); retVal = true; } return(retVal); }
/// <summary> /// Gets the outlook prop val. /// </summary> /// <param name="oItem">The o item.</param> /// <param name="propName">Name of the prop.</param> /// <returns></returns> public object GetOutlookPropVal(object oItem, string propName) { object retVal = null; if (oItem == null) { throw new ArgumentNullException("oItem"); } if (this.InvokeRequired) { Func <object, string, object> func = this.GetOutlookPropVal; retVal = this.Invoke(func, oItem, propName); } else { DebugAssistant.Log(DebugSeverity.Debug, "OutlookListener: get property " + propName); Type outlookType = GetOutlookTypeForComObject(oItem); if (outlookType == null) { throw new ArgumentException("oItem invalid outlook type"); } PropertyInfo propInfo = outlookType.GetProperty(propName); if (propInfo == null) { throw new NullReferenceException("prop with name " + propName + " not found"); } retVal = propInfo.GetValue(oItem, null); //Пытаемся преобразовать выходной тип outlook в тип заместитель if (retVal != null) { OutlookItem outlookItem = _factory.Create <OutlookItem>(retVal); if (outlookItem != null) { retVal = outlookItem; } } } return(retVal); }
/// <summary> /// Gets the folder items. /// </summary> /// <param name="oFolder">The o folder.</param> /// <returns></returns> public List <OutlookItem> GetFolderItems(Outlook.MAPIFolder oFolder) { List <OutlookItem> retVal = new List <OutlookItem>(); if (this.InvokeRequired) { Func <Outlook.MAPIFolder, List <OutlookItem> > func = this.GetFolderItems; return((List <OutlookItem>) this.Invoke(func, oFolder)); } else { for (int i = 1; i <= oFolder.Items.Count; i++) { OutlookItem item = _factory.Create <OutlookItem>(oFolder.Items.Item(i)); if (item != null) { retVal.Add(item); } } } return(retVal); }
/// <summary> /// Adds the folder item. /// </summary> /// <param name="oFolder">The o folder.</param> /// <param name="oItemType">Type of the o item.</param> /// <returns></returns> public OutlookItem AddFolderItem(Outlook.MAPIFolder oFolder, Outlook.OlItemType oItemType) { OutlookItem retVal = null; if (oFolder == null) { throw new ArgumentNullException("oFolder"); } if (this.InvokeRequired) { Func <Outlook.MAPIFolder, Outlook.OlItemType, OutlookItem> func = AddFolderItem; retVal = this.Invoke(func, oFolder, oItemType) as OutlookItem; } else { object newItem = oFolder.Items.Add(oItemType); if (newItem != null) { retVal = _factory.Create <OutlookItem>(newItem) as OutlookItem; } } return(retVal); }