Как устранить ошибку с контрактом данных WCF -Message = "Произошла ошибка при попытке сериализации параметра

У меня есть два контракта данных с одинаковым содержимым в двух разных пространствах имен. я скопировал один из данных в другой и

перешел к определенному методу. но это дает приведенную ниже ошибку и выбрасывает исключение. это не входит в этот метод.

Пожалуйста, дайте мне знать любые идеи / предложения о том, как решить эту проблему. Цените вашу помощь:

Ошибка исключения: {"Type 'System.Collections.Generic.List`1[[GlobalWcfServiceLib.TopicDetailsInfo, GlobalWcfContracts, Version=1.2.2.0, Culture= нейтральный, PublicKeyToken=17c64733a9775004]]' с именем контракта данных 'ArrayOtailfo http://cname.globalservice/11.1/2010/11'не ожидается. Рассмотрите возможность использования DataContractResolver или добавьте любые типы, которые не известны статически, в список известных типов - например, с помощью атрибута KnownTypeAttribute или добавив их в список известных типы, переданные в DataContractSerializer."}

Сообщение = "Произошла ошибка при попытке сериализации параметра http://CName.SharedServices.DBServiceLib:subscriptionDataContract. Сообщение InnerException было" Тип "System.Collections.Generic.List`1 [[GlobalWcfServiceLib.TopicDetailsInfo, GlobalWcfContra...

//////

Вот мой сценарий: я копирую данные из постоянного тока в новый контракт данных, как показано ниже. после копирования, когда я выполняю метод createubscription, я получаю вышеупомянутую ошибку. Я дал подробные данные контракта и ошибки, приложенные к этому вопросу. пожалуйста, обратитесь к этому также.

Method1(SubscriptionDataContracts dc)
{
SubscriptionDataContract subscriptionDataContract = new SubscriptionDataContract();

              List<SubscriptionTopicInfo> topicsInfo = dc.TopicList;
              List<SubscriptionTopic> newTopicsList = new List<SubscriptionTopic>();
              subscriptionDataContract.ExtensionData = dc.ExtensionData;

              subscriptionDataContract.UserID = dc.UserID;

                for (int i = 0; i < topicsInfo.Count; i++)
                {
                    SubscriptionTopic topic = new SubscriptionTopic();
                    topic.DBHandle = topicsInfo[i].DBHandle;
                    topic.Topic = topicsInfo[i].Topic;
                    topic.Target = topicsInfo[i].Target;
                    newTopicsList.Add(topic);    
                }
                subscriptionDataContract.TopicList = newTopicsList;

                CreateSubscriptions(subscriptionDataContract);   //getting the above mentioned error in another dll after going into this method  
  }

////////////////////////////////// // Мои данные контракт

 [DataContract(Name = "TopicDetailsInfo", Namespace = "http://CName.GlobalService")]
    [Serializable]
    public class TopicDetailsInfo
    {        
        protected object topic;        
        protected object baseObjectType;       
        [DataMember]
        public object BaseObjectType
        {
            get
            {
                return baseObjectType;
            }
            set
            {
                baseObjectType = value;
            }
        }

        [DataMember]
        public object TopicID
        {
            get
            {
                return topic;
            }
            set
            {
                topic = value;
            }
        }

        static public TopicDetailsInfo CreateTopic<T, mT>(IComparable<T> objectType, IComparable<mT> objectID)
        {
            var topicDetails = new TopicDetailsInfo();
            topicDetails.BaseObjectType = objectType;
            topicDetails.TopicID = objectID;
            return topicDetails;

        }

    }


    [DataContract(Name = "SubscriptionTopicInfo", Namespace = "http://CName.GlobalService")]
    [KnownType(typeof(List<TopicDetailsInfo>))]
     [Serializable]
    public class SubscriptionTopicInfo
    {
        private object topic;
        private object target;
        private object creator;
        [DataMember]
        public object Topic
        {
            get
            {
                return topic;
            }
            set
            {
                topic = value;
            }
        }
        [DataMember]
        public object Target
        {
            get
            {
                return target;
            }
            set
            {
                target = value;
            }
        }

        [DataMember]
        public object DBHandle
        {
            get
            {
                return creator;
            }
            set
            {
                creator = value;
            }
        }
        static public SubscriptionTopicInfo CreateSubscriptions<T, mT, nT>(IList<TopicDetailsInfo> topic, IComparable<mT> target, IComparable<nT> handle)
        {

            var subscriptionTopic = new SubscriptionTopicInfo();

            subscriptionTopic.Target = target;
            subscriptionTopic.Topic = topic;
            subscriptionTopic.DBHandle = handle;

            return subscriptionTopic;
        }

    }


    [DataContract(Name = "SubscriptionData", Namespace = "http://CName.GlobalService")]
    [KnownType(typeof(List<SubscriptionTopicInfo>))]
    [Serializable]
    public class SubscriptionDataContracts : IExtensibleDataObject
    {
        private ExtensionDataObject extensionDataObjectValue;       
        [DataMember]         
        public string UserID 
        {
            get;
            set;

        }

        [DataMember]
        public string ProjectID 
        {
            get;
            set;

        }
        [DataMember]
        public string FromDiscipline 
        {
            get;
            set;

        }

        [DataMember]
        public string ModuleID 
        {
            get;
            set;

        }

        [DataMember]
        public string SessionID
        {
            get;
            set;

        }

        [DataMember]
        public List<SubscriptionTopicInfo> TopicList
        {
            get;
            set;
        }        
        public ExtensionDataObject ExtensionData
        {
            get
            {
                return extensionDataObjectValue;
            }
            set
            {
                extensionDataObjectValue = value;
            }
        }

}

0 ответов

Другие вопросы по тегам