[編集] 私はそれをコード内のコメントにする方法を考え出しました。WS 2008のGeneric Service Contractから生成されたWSDLの問題
は、私が数十を持っている、とすぐに次の契約でのワークフローの数百を持っています:
// v added
[ServiceBehavior(Namespace = "http://schema.company.com/messages/")]
//^added
public abstract class BasicWorkflowSvc<TRequest, TResponse, TWorkflow> : IBasicContract<TRequest, TResponse>
where TRequest : class
where TResponse : class
where TWorkflow : class
{
//...
}
実際の実装は次のようになります:私は一般的な実装を作成している
[ServiceContract(Namespace = "http://schema.company.com/messages/")]
public interface IBasicContract<TRequest, TResponse>
where TRequest : class
where TResponse : class
{
[OperationContract]
[XmlSerializerFormat]
[ServiceKnownType(typeof(Aggregate))]
TResponse GetReport(TRequest inquiry);
[OperationContract]
[XmlSerializerFormat]
[ServiceKnownType(typeof(Aggregate))]
string GetRawReport(string guid);
[OperationContract]
[XmlSerializerFormat]
[ServiceKnownType(typeof(Aggregate))]
TResponse GetArchiveReport(string guid);
}
[XmlSerializerFormat]
// v changed
[ServiceContract(Namespace = "http://services.company.com/messages/")]
//^changed
public interface IActualProductSvc : IBasicContract<ActualProductRq_Type, ActualProductRs_Type>
{
}
[ServiceBehavior(Namespace = "http://services.company.com/ActualProduct/v1.0")]
// v added
[MessageContract(WrapperNamespace = "http://services.company.com/ActualProduct/v1.0")]
//^added
public class ActualProductSvc : BasicWorkflowSvc<ActualProductRq_Type, ActualProductRs_Type, EF>, IActualProductSvc
{
//...
}
私の問題はこれです:私がServ方法はあり
[DebuggerStepThrough()]
[GeneratedCode("System.ServiceModel", "3.0.0.0")]
[MessageContract(WrapperName = "GetReport", WrapperNamespace = "http://schema.company.com/messages/", IsWrapped = true)]
public partial class GetReportRequest
{
[MessageBodyMember(Namespace = "http://schema.company.com/messages/", Order = 0)]
public ActualProductRq_Type inquiry;
public GetReportRequest()
{
}
public GetReportRequest(ActualProductRq_Type inquiry)
{
this.inquiry = inquiry;
}
}
:
[GeneratedCode("System.ServiceModel", "3.0.0.0")]
[ServiceContract(Namespace = "http://services.company.com/ActualProduct/v1.0", ConfigurationName = "ActualProduct.IActualProductSvc")]
public interface IActualProductSvc
{
// CODEGEN: Generating message contract since the wrapper namespace (http://schema.company.com/messages/) of message GetReportRequest does not match the default value (http://services.company.com/ActualProduct/v1.0)
[OperationContract(Action = "http://schema.company.com/messages/IBasicContractOf_ActualProductRq_Type_ActualProductRs_Type/GetReport",
ReplyAction = "http://schema.company.com/messages/IBasicContractOf_ActualProductRq_Type_ActualProductRs_Type/GetReportResponse")]
[XmlSerializerFormat()]
[ServiceKnownType(typeof (Aggregate))]
GetReportResponse GetReport(GetReportRequest request);
// CODEGEN: Generating message contract since the wrapper namespace (http://schema.company.com/messages/) of message GetRawReportRequest does not match the default value (http://services.company.com/ActualProduct/v1.0)
[OperationContract(
Action = "http://schema.company.com/messages/IBasicContractOf_ActualProductRq_Type_ActualProductRs_Type/GetRawReport",
ReplyAction = "http://schema.company.com/messages/IBasicContractOf_ActualProductRq_Type_ActualProductRs_Type/GetRawReportResponse")]
[XmlSerializerFormat()]
[ServiceKnownType(typeof (Aggregate))]
GetRawReportResponse GetRawReport(GetRawReportRequest request);
// CODEGEN: Generating message contract since the wrapper namespace (http://schema.company.com/messages/) of message GetArchiveReportRequest does not match the default value (http://services.company.com/ActualProduct/v1.0)
[OperationContract(
Action = "http://schema.company.com/messages/IBasicContractOf_ActualProductRq_Type_ActualProductRs_Type/GetArchiveReport",
ReplyAction =
"http://schema.company.com/messages/IBasicContractOf_ActualProductRq_Type_ActualProductRs_Type/GetArchiveReportResponse")]
[XmlSerializerFormat()]
[ServiceKnownType(typeof (Aggregate))]
GetArchiveReportResponse GetArchiveReport(GetArchiveReportRequest request);
}
...ラッパーの束を持つ:他のプロジェクトに、このプロジェクトへの氷の参照は、生成されたコードは、追加の(と役に立たない)リクエストとレスポンスの種類がありますこれらのラッパーを生成させないために手で削除することはできませんか?私が求めているのは、すべてのワークフローから共通の契約を抽出しようとする前に、それらが生成されていないということです。異なる名前空間を持つ共通のインタフェースはありません。これらのワークフローを使用している人々は、参照し、手動でReference.csファイルから多くのものを削除します。
私は、Visual StudioでWSDLインポートツールを嫌い:(
いいえ、それはチェックされていません:( –