Visual studio 2010 在WCF中公开特定字段
我有一节课Visual studio 2010 在WCF中公开特定字段,visual-studio-2010,wcf,c#-4.0,Visual Studio 2010,Wcf,C# 4.0,我有一节课 [DataContract] public class Sample { [DataMember] int a; [DataMember] int b; [DataMember] int c; } Sample sampleMethod1 () { return new Sample { a =5, b=6 } } Sample sampleMethod1 () { return new Sample { a =15, c=61 }
[DataContract]
public class Sample
{
[DataMember]
int a;
[DataMember]
int b;
[DataMember]
int c;
}
Sample sampleMethod1 ()
{
return new Sample { a =5, b=6 }
}
Sample sampleMethod1 ()
{
return new Sample { a =15, c=61 }
}
现在我想当我的外部客户调用sampleMethod1时,示例类的可见字段是a和c,而不是b。类似地,在sampleMethod2中,您需要这样的东西
[DataContract]
[KnownType(typeof(SampleDerived1))]
[KnownType(typeof(SampleDerived2))]
public class Sample
{
[DataMember]
public int a;
}
[DataContract]
public class SampleDerived1 : Sample
{
[DataMember]
public int b;
}
[DataContract]
public class SampleDerived2 : Sample
{
[DataMember]
public int c;
}
Sample sampleMethod1 ()
{
return new SampleDerived1{ a =5, b=6 }
}
Sample sampleMethod2 ()
{
return new SampleDerived2{ a =15, c=61 }
}
你的方法应该是这样的
[DataContract]
[KnownType(typeof(SampleDerived1))]
[KnownType(typeof(SampleDerived2))]
public class Sample
{
[DataMember]
public int a;
}
[DataContract]
public class SampleDerived1 : Sample
{
[DataMember]
public int b;
}
[DataContract]
public class SampleDerived2 : Sample
{
[DataMember]
public int c;
}
Sample sampleMethod1 ()
{
return new SampleDerived1{ a =5, b=6 }
}
Sample sampleMethod2 ()
{
return new SampleDerived2{ a =15, c=61 }
}
听起来您希望从每个方法返回不同的类。您能否提供更多信息,说明为什么某些字段在通过特定方法返回对象时会“消失”?这是不可能的,因为您与外部客户共享一份完整的
Sample
类合同。所以你可能应该把它分成两个不同的接口/类。恐怕你需要创建两个类来实现它。