我正在尝试准备我的应用程序代码以接受第三方的年度更改wsdl
。我无法制作也无法控制它的设计wsdl
。其中的对象wsdl
可能会更改、添加项目、删除项目等。但是,我仍然需要保留wsdl
.
我的计划是添加当前wsdl
作为服务参考,就像我对以前的wsdl
.
目前,我有多种类似于下面的方法(包括下面的一种)。
使用属性TaxYear
来确定wsdl
实际引用哪个:“Service2015”或“Service2016”。我传入表示来自 的对象的通用对象wsdl
,并传入ref
我在父方法中使用的那些对象的参数。
像这样重构,会造成很多膨胀,我不禁认为必须有更好的方法来做我想做的事情。
有没有更好的方法使用 C# 来做这件事,或者这是做我需要完成的最好和最不方便的方法。
private static void RetrieveRequestObject(ref object objRequest, object objBusinessHeader, object objSecurityHeader, object objManifestHeader, object objFormData)
{
if (TaxYear.Equals(2015))
{
objRequest = new Service2015.BulkRequestTransmitterRequest()
{
ACABusinessHeader = (Service2015.ACABulkBusinessHeaderRequestType)objBusinessHeader,
Security = (Service2015.SecurityHeaderType)objSecurityHeader,
ACATransmitterManifestReqDtl = (Service2015.ACATrnsmtManifestReqDtlType)objManifestHeader,
ACABulkRequestTransmitter = (Service2015.ACABulkRequestTransmitterType)objFormData
};
}
else if (TaxYear.Equals(2016))
{
objRequest = new Service2016.BulkRequestTransmitterRequest()
{
ACABusinessHeader = (Service2016.ACABulkBusinessHeaderRequestType)objBusinessHeader,
Security = (Service2016.SecurityHeaderType)objSecurityHeader,
ACATransmitterManifestReqDtl = (Service2016.ACATrnsmtManifestReqDtlType)objManifestHeader,
ACABulkRequestTransmitter = (Service2016.ACABulkRequestTransmitterType)objFormData
};
}
}