我试图在WCF服务中使用Class。当我打电话给
u.attributeChanges.Add(a);
我得到:
"Object reference not set to an instance of an object"
如果在客户端应用程序中创建类,则它正在运行。
UpdateChanges Class
[DataContract]
public class UpdateChanges
{
private void Initialize()
{
this.attributeChanges = new List<AttributeChanges>();
}
public UpdateChanges()
{
this.Initialize();
}
[DataMember]
public string objectGuid { get; set; }
[DataMember]
public Utilities.ObjectTypes objectType { get; set; }
[DataMember]
public Utilities.ChangeType changeType{ get; set; }
[DataMember]
public List<AttributeChanges> attributeChanges { get; set; }
[OnDeserializing]
public void OnDeserializing(StreamingContext ctx)
{
this.Initialize();
}
}
AttributeChanges类
[DataContract]
public class AttributeChanges
{
[DataMember]
public string attributeName { get; set; }
[DataMember]
public string attributeValue { get; set; }
}
客户代码:
Service.DirsyncServiceClient proxyClient;
proxyClient = Utilities.GetProxy("http://192.168.1.45/vDir/Service.svc");
Service.UpdateChanges u = new Service.UpdateChanges();
Service.AttributeChanges a = new Service.AttributeChanges();
a.attributeName = "Attribute1";
a.attributeValue = "Value1";
u.attributeChanges.Add(a);
proxyClient.SaveObject(u);
无论如何解决这个问题?
答案 0 :(得分:0)
您正在使用生成的客户端代码。 问题是客户端在WSDL xlm的基础上生成此代码。 CTOR中的代码不会在客户端生成,因为客户端无法识别此代码。
您有几个选择 -
1.将共享DLL与数据协定一起使用,而不是通过Web引用生成它。
2.在“部分”课程中自己实施。