2010-09-03 16 views
19

है, मुझे यह समस्या हो रही है और मेरे बालों को खींच रहा है।सदस्य को क्रमबद्ध नहीं कर सकता .... क्योंकि यह एक इंटरफ़ेस

Exception Details: System.NotSupportedException: 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]] because it is an interface.

Source Error:

Line 196: Customer customer = OperationsManager.Instance.CustomerService.GetCustomer(7); Line 197: Line 198: string xml = OperationsManager.Instance.CustomerService.GetCustomerAddressesXml(CustomerAddress.FindAll()); Line 199: Line 200: Order order = OperationsManager.Instance.OrderService.CreateOrderFromCart(xml);

Source File: c:\HostingSpaces\greetwus\galadavetiye.com\wwwroot\HannaPrints\HannaPrints\WebUI\CreateGreetingCard.aspx.cs Line: 198

Stack Trace:

[NotSupportedException: 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]] because it is an interface.]

[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 की सूची में की है कि अगर कुछ भी कर देखने के लिए, लेकिन यह फ्लॉप, वास्तव में, यह और भी उन परिवर्तनों को करने के बाद लोड करने के लिए एक दूसरे लेने के फ्लॉप, im अनुमान लगाने को बदल दिया है: मैं followin त्रुटि है क्योंकि त्रुटि उस भाग में आने से पहले भी होती है। मैंने अपनी रिमोट फाइलों को यह देखने के लिए चेक किया कि क्या यह सही तरीके से अपलोड हो रहा था और यह था।

यहाँ कोड है:

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; } 
} 
} 

उत्तर

22

आपके द्वारा पोस्ट किए गए कोड में, CustomerAddresses का प्रकार IList<CustomerAdress> है। यह एक इंटरफेस है। त्रुटि संदेश की तरह, आप एक इंटरफेस serialize नहीं कर सकते हैं।

+0

मैं समझता हूं, लेकिन मैंने इसे सामान्य सूची में बदलने की कोशिश की, लेकिन उसने मुझे एक ही त्रुटि दी, और मैंने सुनिश्चित किया कि कोड अपलोड किया गया था और ठीक से बदल दिया गया – anthonypliu

+0

@anthony: नहीं, आपने इसे किसी सूची में नहीं बदला है और इसे उसी तरह असफल हो जाओ। क्षमा करें, आपने कुछ गलत किया है। शायद कुछ मूर्खतापूर्ण है जैसे वर्चुअल प्रॉपर्टी के रिटर्न वैल्यू को 'IList ' के रूप में छोड़ दें और ओवरराइड से 'सूची ' वापस लौटें। –

+0

मुझे एक ही समस्या है। जब मैं करता हूं, "XmlSerializer serializer = new XmlSerializer (kevinObject)" जहां केविन ऑब्जेक्ट विशेषता के साथ एक ऑब्जेक्ट है, [DataContract]। केविन ऑब्जेक्ट में, "INewObject" नामक एक फ़ील्ड है क्योंकि INUObject के कई कार्यान्वयन हैं। क्या इंटरफ़ेस को शामिल करने का कोई तरीका है जिसे [DataContract] चिह्नित किया गया है? –

-1

नहीं आपकी समस्या का स्रोत, लेकिन आपको

की आवश्यकता है
+1

यह कैसे काम करेगा यदि 'serializer' उपयोगकर्ता द्वारा वर्णित XmlSerializer है और प्रकार को क्रमबद्ध नहीं किया जा सकता है? –

+0

यदि टाइप को क्रमबद्ध नहीं किया जा सकता है तो कुछ भी काम नहीं करेगा। –

संबंधित मुद्दे