С помощью mailBoxes.Items.Add(store.DisplayName);
вы добавляете отображаемое имя магазина как string
в ComboBox.И это именно то, что вы получаете взамен mailBoxes.SelectedItem
.Конечно, вы не можете привести эту строку к Store
.
. Вы можете поместить магазин в класс отображения
public class StoreDisplay
{
public StoreDisplay(Store store)
{
this.Store = store;
}
public Store Store { get; }
public override string ToString() ==> Store.DisplayName;
}
. Затем вы можете добавлять элементы в ComboBox с помощью
* 1011.*
Поскольку ToString
был переопределен, ComboBox покажет DisplayName
или каждый элемент магазина.
Наконец, вы можете восстановить магазин с помощью
var selectedStore = ((StoreDisplay)mailBoxes.SelectedItem)?.Store;
if (selectedStore != null) {
...
}
. Вы можететакже попробуйте добавить объекты Store
непосредственно в ComboBox;однако я не знаю, будут ли они правильно отображаться.
Примечание: если у вас конфликтующие имена типов или вы просто хотите использовать более короткие ссылки на пространства имен, вы можете использовать псевдонимы пространства имен
using MsOl = Microsoft.Office.Interop.Outlook;
using AppSession = Globals.ThisAddIn.Application.Session;
и используйте его вот так
var application = new MsOl.Application();
MsOl.NameSpace ns = application.GetNamespace("MAPI");
Stores stores = ns.Stores;
foreach (var store in AppSession.Stores
.Cast<MsOl.Store>()
.Where(c => c.ExchangeStoreType == MsOl.OlExchangeStoreType.olExchangeMailbox))
{
...
}