Невозможно сериализовать элемент ... потому что это интерфейс.

У меня возникла эта проблема, и я ее растягивал. У меня следующая ошибка:

Сведения об исключении: System.NotSupportedException: Строка 197: Строка 198: строка xml = OperationsManager.Instance.CustomerService.GetCustomerAddressesXml (CustomerAddress.FindAll ()); Строка 199: Строка 200: Порядок заказа = OperationsManager.Instance.OrderService.CreateOrderFromCart (xml);

Исходный файл: c: \ HostingSpaces \ greetwus \ galadavetiye.com \ wwwroot \ HannaPrints \ HannaPrints \ WebUI \ CreateGreetingCard.aspcs.

Трассировка стека:

[NotSupportedException: Невозможно сериализовать член HannaPrintsDataAccess.Customer.CustomerAddresses типа System.Collections.Generic.IList`1 [[HannaPrintsDataAccess.CustomerAddress, HannaPrintsDataAccess, Version = 1.0.0.0] nuen, поскольку = нейтральный, итак = нейтральный, культурный = = это интерфейс.]

[InvalidOperationException: Cannot serialize member 'HannaPrintsDataAccess.Customer.CustomerAddresses' of type 'System.Collections.Generic.IList`1[[HannaPrintsDataAccess.CustomerAddress, HannaPrintsDataAccess, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]', see inner exception for more details.] System.Xml.Serialization.StructModel.CheckSupportedMember(TypeDesc typeDesc, MemberInfo member, Type type) +889917 System.Xml.Serialization.StructModel.GetPropertyModel (PropertyInfo propertyInfo) +132 ........

Я изменил все свои IList на List, чтобы посмотреть, будет ли это что-нибудь делать, но это не так, на самом деле, это не так даже для загрузки после внесения этих изменений потребуется секунда, я предполагаю, что ошибка происходит еще до того, как она попадает в эту часть. Я проверил свои удаленные файлы, чтобы проверить, правильно ли он загружался, и это было так.

Вот код:

using System;
using System.Collections.Generic; 
using Castle.ActiveRecord;
namespace HannaPrintsDataAccess { 
    public partial class Customer { 
        private IList _customerAddresses;


        public CustomerAddress GetPrimaryCustomerAddress()
        {
            foreach (CustomerAddress address in _customerAddresses)
            {
                if (address.IsPrimary)
                    return address;
            }
            return null;
        }


        [HasMany(typeof(CustomerAddress), ColumnKey = "CustomerId", Table = "Customer")]
        public virtual IList<CustomerAddress> CustomerAddresses
        {
            get
            {
                return this._customerAddresses;
            }
            set
            {
                this._customerAddresses = value;
            }
        }
    }
}

Ошибка происходит, когда этот код активирован:

protected void orderButton_Click(object sender, EventArgs e)
{
    Customer customer = OperationsManager.Instance.CustomerService.GetCustomer(7);

    string xml = OperationsManager.Instance.CustomerService.GetCustomerAddressesXml(CustomerAddress.FindAll());

    Order order = OperationsManager.Instance.OrderService.CreateOrderFromCart(xml);
    OperationsManager.Instance.CartService.MoveCart("MyDesigns");

    Response.Redirect("~/Customer/PayByCreditCard.aspx?orderGuid=" + order.OrderGuid);
}

Класс CustomerAddress:

using System.IO;
using System.Xml.Serialization;
using Castle.ActiveRecord;


namespace HannaPrintsDataAccess
{
public partial class CustomerAddress
{
    public string ToXml()
    {
        XmlSerializer serializer = new XmlSerializer(GetType());
        MemoryStream memoryStream = new MemoryStream();
        serializer.Serialize(memoryStream, this);
        memoryStream.Seek(0, SeekOrigin.Begin);
        return new StreamReader(memoryStream).ReadToEnd();
    }

    [BelongsTo("CustomerId")]
    public virtual Customer Customer { get; set; }
}
}
20
задан John Saunders 25 October 2012 в 15:25
поделиться