指定接口成员叫不上名字,但类型 [英] Specify interface member not by name but type
问题描述
我有很多由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屋!