0
這是我第一次做的代碼(這是不工作),我的問題將遵循代碼。Wcf序列化/反序列化List <>
[DataContract]
public class ValidationData
{
[DataMember]
public bool IsValid { get; set; }
[DataMember]
public List<string> Messages { get; set; }
}
[DataContract]
public class Parameters
{
[DataMember]
public string Name { get; set; }
[DataMember]
public ValidationData ValidationData { get; set; }
}
[ServiceContract]
public interface IValidation
{
[OperationContract]
void Validate(Parameters parameters);
}
public class Validation : IValidation
{
public void Validate(Parameters parameters)
{
bool valid = someClass.DoValidation(parameters.Name);
parameters.ValidationData.IsValid = valid;
if(!valid)
parameters.ValidationData.Messages.Add("some validation message");
}
}
在客戶端我叫服務,方式:
var service = new WcfService.ValidationService();
var parameters = new WcfService.Parameters();
parameters.Name = "some name to validate";
parameters.ValidationData = new WcfService.ValidationData();
parameters.ValidationData.Messages = new List<string>();
service.SynchronizeDatabase(parameters);
if(!parameters.ValidationData.IsValid)
ShowMessage(string.join(Environnement.NewLine, parameters.ValidationData.Messages));
使用的代碼,當我看着parameters.ValidationData
在客戶端,我對現場IsValid
良好的價值,但無論IsValid
的值如何,該列表總是空的。
我知道這不是最好的做法,所以我改變了它。現在,它的工作和服務合同的樣子:
[ServiceContract]
public interface IValidation
{
[OperationContract]
ValidationData Validate(Parameters parameters); // changed void to ValidationData
}
和參數數據的合同現在是:
[DataContract]
public class Parameters // Removed the ValidationData member
{
[DataMember]
public string Name { get; set; }
}
最後操作合同的執行:
public class Validation : IValidation
{
public ValidationData Validate(Parameters parameters)
{
var validations = new ValidationData(); // in the constructor I initialize the list
validations.IsValid = someClass.DoValidation(parameters.Name);
if(!validations.IsValid)
validations.Messages.Add("some validation message");
return validations;
}
}
我的問題是爲什麼列表總是空的,如果它包含在參數中客戶端發送的列表(第一種方式是我這樣做)。而不是在服務器端創建ValidationData對象並由操作合同返回時?我只是在這裏尋找解釋,因爲我已經解決了我的問題。
(您可以隨時關閉它,如果它不屬於這裏......)
謝謝,就是這樣。 – Fid