这是接口文件中的一个类。
[DataContract]
public class ClassX
{
public ClassX()
{
ClassXParameters = new List<ClassXParameter>();
}
public void Add(string name, string value)
{
ClassXParameters.Add(new ClassXParameter() { Name = name, Value = value });
}
[DataMember]
public List<ClassXParameter> ClassXParameters { get; set; }
}
[DataContract]
public class ClassXParameter
{
[DataMember]
public string Name { get; set; }
[DataMember]
public string Value { get; set; }
}
在客户端我正在尝试做这样的事情
ClassX classx = new ClassX();
classx.Add("testname", "testvalue");
但是这个.Add方法甚至都不可见。
目前我在做
ClassX classx = new ClassX();
List<ClassXParameter> params = new List<ClassXParameter()>;
params.add(new ClassXParameter() {Name="testname", Value="testvalue"});
classx.ClassXParameters = params;
无论如何我能做我想做的事吗?
注意:我不确定为什么上面的一些文字是粗体。
答案 0 :(得分:1)
如果从头开始自动生成客户端代码,它将生成一个新类,其中包含标有DataContract
的成员和属性。
如果您希望客户端上有可用的方法,则可以通过将DataContract
类型放在自己的程序集中来实现此目的,该程序集是从服务器和客户端引用的。生成服务引用时,必须选择重用现有类而不是生成新类的选项。
通常,将数据验证规则放在数据协定类属性设置器中是合适的。在客户端重用数据协定程序集将导致数据验证直接在客户端上进行,而无需往返。它还会导致错误发生在比报告为反序列化错误更容易发现的地方。
答案 1 :(得分:0)
数据合同仅供数据使用。任何方法都不会在客户端上显示。
大胆是因为“-----”。