Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 在WCF中公开特定字段_Visual Studio 2010_Wcf_C# 4.0 - Fatal编程技术网

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
类合同。所以你可能应该把它分成两个不同的接口/类。恐怕你需要创建两个类来实现它。