Этот ответ основан на статье, которая больше не существует:
Сводка статьи:
"В основном, WCF является уровнем служб, который позволяет Вам создавать приложения, которые могут передать использование множества механизмов связи. С ним можно передать Одноранговый узел использования для Пиринга, Именованные каналы, веб-сервисы и так далее.
Вы can’t сравнивают их, потому что WCF является платформой для того, чтобы создать совместимые приложения. Если Вам нравится, можно думать о нем как о механизме реализации SOA. Что это означает?
ну, WCF соответствует чему-то известному как ABC, где A является адресом сервиса, с которым Вы хотите связаться, B обозначает привязку, и C обозначает контракт. Это важно, потому что возможно изменить привязку, обязательно не изменяя код. Контракт намного более мощен, потому что он вызывает разделение контракта от реализации. Это означает, что контракт определяется в интерфейсе, и существует конкретная реализация, которая связывается с потребителем, использующим ту же идею контракта. Модель данных абстрагирована".
... позже...
"должен использовать WCF, когда мы должны связаться с другими технологиями связи (e.g. Одноранговый узел к Одноранговому узлу, Именованным каналам), а не веб-сервис"
listView1.SelectedItems [0]
возвращает объект
. Сначала вам нужно привести его к определенному типу , прежде чем вы сможете получить доступ к его членам. Для преобразования вам необходимо знать имя класса, в который выполняется преобразование, но вы добавляете экземпляры анонимного класса (= не имеет имени) в свой ListView.
Решение: Определите класс ( например, Книга
) со свойствами ISBN, Title и Author и добавьте экземпляры Book
в ListView. Затем вы можете выполнить необходимое приведение:
private void getSelectedItem(object sender, MouseButtonEventArgs e)
{
Book book = (Book)listView1.SelectedItems[0];
System.Windows.MessageBox.Show(book.ISBN);
}
Не забудьте добавить экземпляры if Book
в ListView вместо экземпляров анонимного типа:
var items = from item in xdoc.Descendants("Book")
select new Book // <---
{
ISBN = (string)item.Element("ISBN"),
Title = (string)item.Element("Title"),
Author = (string)item.Element("Author"),
};
foreach (var item in items)
{
listView1.Items.Add(item);
}