我在为数据契约工作的项目上使用protobuf,手工创建.proto文件,并让定制工具输出C#代码,而这正是它所做的。我也开始在服务契约中使用它,并且服务接口也被创建得很好。
为了连接到我正在使用的某些系统,所以我启用了datacontracts生成器选项,尽管存在System.ServiceModel属性,但似乎没有任何方法来声明该服务可能引发的特定故障。
所以我的问题基本上是:
exceptions/faults.
是否有任何方法来声明protobuf-net中的服务WCF操作错误,或者这是否是我必须等待版本2的东西?
非常感谢。
发布于 2010-09-14 11:14:47
我不知道为什么不将其声明为partial interface,因为在C# 2.0中,这似乎是非常高兴的;当我得到第二次更改时,我会更改它,但是请注意,您可以在本地应用手动更改--只需编辑csharp.xslt文件。现在,xslt并不是每个人都喜欢的东西,但它应该是1行更改(接近单词interface) --实际上,它可能是在这里添加的partial:
<xsl:template match="ServiceDescriptorProto">
<xsl:if test="($optionClientProxy or $optionDataContract)">
[global::System.ServiceModel.ServiceContract(Name = @"<xsl:value-of select="name"/>")]</xsl:if>
public /* HERE => */ partial /* <= HERE */ interface I<xsl:value-of select="name"/>
{
<xsl:apply-templates select="method"/>
}
<xsl:if test="$optionProtoRpc">
public class <xsl:value-of select="name"/>Client : global::ProtoBuf.ServiceModel.RpcClient
{
public <xsl:value-of select="name"/>Client() : base(typeof(I<xsl:value-of select="name"/>)) { }
<xsl:apply-templates select="method/MethodDescriptorProto" mode="protoRpc"/>
}
</xsl:if>
<xsl:apply-templates select="." mode="clientProxy"/>
</xsl:template>由于xslt是可调整的,所以您应该能够应用所需的任何其他更改。
发布于 2010-09-13 13:47:50
这并不能直接回答你的问题,但无论如何可能是合适的
protobuf不需要.proto文件来工作,因此只编写C#类并用WCF属性(和FaultContract属性)修饰它们的工作量与创建proto的(手动)以生成C#类的工作量相同。
https://stackoverflow.com/questions/3700047
复制相似问题