1

これは私が抱えている奇妙な問題だと思います。サーバー側で定義されたいくつかのクラスがあり、サービス参照を介して参照します。そのうちの2つは正常に機能しています。サービス インターフェイスから既知の型を指定しました。

[ServiceKnownType(typeof(Obj))]
[ServiceKnownType(typeof(DigitalObject))]
[ServiceKnownType(typeof(AnalogueObject))]
[ServiceKnownType(typeof(AttributeType))]
[ServiceKnownType(typeof(AttributeData))]

Silverlight アプリケーションから、次の方法でクラスを参照します。

private ServiceReference.AttributeData commonData = new ServiceReference.AttributeData();

これは正常に動作していますが、別のクラスでまったく同じことを行っています。唯一の違いは、という名前のクラスが type のクラスから派生していることAnalogueObjectです。何が起こっているのか分かりますか?名前空間はすべて同じで、Web ソリューションを再構築し、サービス参照を更新しました。DigitalObjectObj

クラスの例:

using System.ComponentModel;

namespace CapCon2
{
    public class Obj : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;    
        private string _Description;  
        public string ID { get; set; }    
        public string Description
        {
            get { return _Description; }
            set
            {
                _Description = value;
                NotifyPropertyChanged("Description");
            }
        }    
        public void NotifyPropertyChanged(string name)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(name));
            }
        }
    }
}

    public class AttributeData : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private string _Description;

    public string ID { get; set; }

    public string Description 
    {
        get { return _Description; }
        set 
        {
            _Description = value;
            NotifyPropertyChanged("Description");
        }
    }

    public string Attribute { get; set; }

    public string DataType { get; set; }

    public string Input_InputSource { get; set; }

    public string Output_OutputDest { get; set; }

    public void NotifyPropertyChanged(string name)
    {
        if (PropertyChanged!= null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(name));
        }
    }
}
4

1 に答える 1

1

サーバーとクライアントの間で複合型を渡す場合は、DataContract属性でマークし、そのプロパティを でマークする必要がありますDataMember。これにより、オブジェクトをシリアル化して SOAP メッセージに渡すように .NET に指示します。

于 2012-05-01T09:43:22.107 に答える