指定接口成员叫不上名字,但类型 [英] Specify interface member not by name but type

查看:178
本文介绍了指定接口成员叫不上名字,但类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有很多由SvcUtil工具从一些外部的WSDL文件生成的相似的类。任何类有一个标题属性和字符串其中名为类名+1<财产/ code>。

I have a lot of similar classes generated by svcutil from some external WSDL file. Any class has a Header property and string property which named class name + "1".

例如,我有类: SimpleRequest ,有标题属性和 SimpleRequest1 属性。
另外一个是 ComplexRequest ,有标题属性和 ComplexRequest1 属性。

For instance, I have classes: SimpleRequest that has Header property and SimpleRequest1 property.
Another one is ComplexRequest that has Header property and ComplexRequest1 property.

所以,我要创建这些类的通用接口。所以,基本上我可以定义这样的事情:

So, I want to create a common interface for such classes. So, basically I can define something like that:

interface ISomeRequestClass {
  string Header;
  // here is some definition for `class name + "1"` properties...
}

是否有可能在接口定义这样的会员吗?

Is it possible to define such member in interface?

以下是编辑后去...

下面是生成的类的示例:

Here is sample of generated class:

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
[System.ServiceModel.MessageContractAttribute(IsWrapped=false)]
public partial class SimpleRequest
{


    public string Header;

    [System.ServiceModel.MessageBodyMemberAttribute(Name="SimpleRequest", Namespace="data", Order=0)]
    public SimpleRequestMsg SimpleRequest1;

    public SimpleRequest()
    {
    }

    public SimpleRequest(string Header, SimpleRequestMsg SimpleRequest1)
    {
        this.Header = Header;
        this.SimpleRequest1 = SimpleRequest1;
    }
}


帖子编辑2

我改变了这个恼人的+1属性的定义来重新present真正实际的图片。这一切都具有不同的类类型。所以,我怎么也拔不出来常用的接口?

I changed definition of this annoying +1 property to represent real actual picture. It's all has different class types. So how can I pull it out to common interface?

帖子编辑3

下面是耦合问题,这会带来更多的澄清。

Here is coupled question that could bring more clarify.

推荐答案

您可以更广泛地定义你的界面:

You could define your interface more generally:

interface ISomeRequestClass {
  string HeaderProp {get; set;}
  string Prop {get; set;}
}

和您的具体类可以扩展(一个额外的code文件)通过映射接口成员类字段如下所示:

And your concrete classes could be extended (in an extra code file) by mapping interface members to class fields like so:

public partial class SimpleRequest : ISomeRequestClass
{
  public string HeaderProp
  {
    get
    {
      return Header;
    }
    set
    {
      Header = value;
    }
  }

  public string Prop
  {
    get
    {
      return SimpleRequest1;
    }
    set
    {
      SimpleRequest1= value;
    }
  }
}

这篇关于指定接口成员叫不上名字,但类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆