をシリアライズすることができない私は、次のWCFのDataContractを持っている:Datacontract例外。
[DataContract]
public class Occupant
{
private string _Name;
private string _Email;
private string _Organization;
private string _Badge;
public Occupant(string name, string badge, string organization)
{
Name = name;
Badge = badge;
Organization = organization;
}
public Occupant(string name, string badge)
{
Value = name;
Key = badge;
}
[DataMember]
public string Key
{
get { return _Name; }
set { _Name = value; }
}
[DataMember]
public string Value
{
get { return _Badge; }
set { _Badge = value; }
}
[DataMember]
public string Name
{
get { return _Name; }
set { _Name = value; }
}
[DataMember]
public string Email
{
get { return _Email; }
set { _Email = value; }
}
[DataMember]
public string Organization
{
get { return _Organization; }
set { _Organization = value; }
}
[DataMember]
public string Badge
{
get { return _Badge; }
set { _Badge = value; }
}
}
私は、Webブラウザを介してこのサービスにアクセスしようとすると(それがIISでホストされている)、私はこのエラーを取得しています:
System.Runtime.Serialization.InvalidDataContractException: Type 'MyNamespace.Occupant' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute. If the type is a collection, consider marking it with the CollectionDataContractAttribute.
私の方法の1つはOccupant
のList
です。これが原因だろうか?
DCSが実際にコンストラクタを必要としているかどうかは間違いありません。http://msdn.microsoft.com/en-us/magazine/cc163569.aspxおよびhttp://stackoverflow.com/を参照してください。質問/ 178645/how-does-wcf-deserialization-constructorを呼び出さずにオブジェクトをインスタンス化 – StuartLC
パブリックなパラメータのないコンストラクタが必要ですか?またはプライベートなパラメータのないコンストラクタも正常に動作しますか? – VCD
@VCDプライベートパラメータなしコンストラクタが動作します。ちょうど.NET Framework 4.5で試しました –