Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        /// <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);
        }
Exemple #4
0
        /// <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);
        }