我正在使用创建WCF服务教程的示例代码,它只有一半的作品。当它被硬编码并且检索列表工作时,添加到列表工作。但是,使用例程添加或修改列表不起作用。下面是代码: BookData.csC#无法添加或修改WCF列表
using System.Runtime.Serialization;
namespace BookServicesV2
{
[DataContract]
public class BookData
{
[DataMember]
public int BookID { get; set; }
[DataMember]
public string Title { get; set; }
[DataMember]
public string Author { get; set; }
[DataMember]
public decimal Price { get; set; }
}
}
BookService.cs:
using System.Collections.Generic;
namespace BookServicesV2
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in both code and config file together.
public class BookService : IBookService
{
private List<BookData> _books;
private BookService()
{
_books = new List<BookData>();
var book = new BookData { BookID = 1, Author = "Shakespeare", Title = "To Be or Not To Be", Price = 1.49M };
_books.Add(book);
book = new BookData { BookID = 2, Author = "Mark Twain", Title = "Not Dead Yet", Price = 3.50M };
_books.Add(book);
}
#region IBookService Members
public void AddBook(BookData book)
{
if (book != null) _books.Add(book);
}
public void UpdatePrices(decimal increaseAmmount)
{
foreach (var book in _books)
{
book.Price += increaseAmmount;
}
}
public List<BookData> GetBooks()
{
return _books;
}
#endregion
}
}
当我启动WCF测试客户端,GetBooks检索两个硬编码的书籍。当我使用AddBook或UpdatePrices,然后GetBooks时,没有任何改变。我基本上是在学C#和WCF,所以我完全陷入了困境。谢谢!
你有没有调试你的添加和更新方法,看看它们是否真的被客户端击中,以及进入方法的书是否为空? – Jakotheshadows
已经有一段时间我自己使用WCF了,但我猜想问题在于,每次调用GetBooks时都会得到一个新的'BookService'实例。您需要确保您的列表已被保留,例如在数据库中。 –
..或者只是确保你的范围被修改.. – gravity