Tôi đang cố gắng để xây dựng một đối tượng mà trông giống như sau:Làm thế nào để deserialize Enumerable.ToList <>() List <>
public class MyObject
{
private IList<AnotherObject> items;
public List<AnotherObject> Items
{
return items.AsEnumerable().ToList<AnotherObject>();
}
}
Tôi đang sử dụng NHibernate là Dal của tôi và có nó lập bản đồ trực tiếp vào trường mục và tất cả đều hoạt động tốt.
Tôi cũng đang sử dụng Windows Workflow và hoạt động sao chép không hoạt động với IList chung chung. (http://social.msdn.microsoft.com/Forums/en-US/windowsworkflowfoundation/thread/2ca74b60-fd33-4031-be4b-17a79e9afe63) Điều này về cơ bản là buộc tôi phải sử dụng danh sách gói <> thay vì IList <>. Điều này tất nhiên phá vỡ ánh xạ NHibernate trực tiếp như thực hiện IList NHibernate không thể được đúc trực tiếp vào một danh sách.
** CHỈNH SỬA: Yêu cầu quy trình làm việc của Windows thực sự có nghĩa là tôi sẽ mất quyền truy cập an toàn loại vào danh sách bất kể nó yêu cầu IList như thế nào.
Bây giờ, mục tiêu là sắp đặt từng hàng/deserialize đối tượng này. Điều này làm việc tốt với serialization nhị phân nhưng các đối tượng proxy NHibernate bên dưới phát nổ với lỗi nhibernate khi tôi cố gắng deserialize chúng.
Vì vậy, tôi đã thử xml serialization. Các serialization hoạt động tốt và mang lại cho tôi định nghĩa lớp bê tông đẹp của tôi trong xml serialized tập tin mà dải ra các nhibernate proxy hoàn toàn. Tuy nhiên, khi cố gắng deserialize này, tôi không thể thêm các mục vào danh sách như các cuộc gọi items.AsEnumerable.ToList sẽ không cho phép các mục được thêm vào danh sách cơ bản thông qua phương thức .Add.
Có ai có bất kỳ suy nghĩ nào về điều này không? Tôi đang đi về điều này một cách sai lầm?
** CHỈNH SỬA: Lớp bê tông NHibernate là NHibernate.Collection.Generic.PersistentGenericBag thực sự thực thi trực tiếp IList. Tuy nhiên, tôi đã mất tất cả các lợi ích loại an toàn của danh sách chung. Điều này đặt tôi trở lại trong lĩnh vực phải viết một wrapper cho mỗi đối tượng trẻ em và tôi thực sự muốn tránh điều đó nếu có thể.
Tôi đang dự tính lộ trình bao bọc nhưng tôi không thực sự muốn viết trình bao bọc cho từng đối tượng con trong mô hình miền của mình. Thế nào là điểm của generics? :) Tôi sẽ thừa nhận đây có lẽ là một giải pháp cuối cùng mặc dù. –
Giải pháp hiện tại tôi đang làm việc với một lớp bao bọc thực hiện cả IList và IList. Các phương pháp không chung chung đã được viết để thực hiện kiểm tra kiểu. Nhưng về cơ bản nó chỉ kết thúc một IList nội bộ. –