1

我正在为不同的客户创建一个 Web 服务。所以我为 3 种不同的客户类型提供了 3 个类:

类型 1:

[WebMethod]
[SoapRpcMethod(Use = System.Web.Services.Description.SoapBindingUse.Literal)]
public string databaseConnectionInfo()
{
  return WSExecute.Executer.databaseConnectionInfo(System.Web.HttpContext.Current);
}

类型 2:

[WebMethod]
public string databaseConnectionInfo()
{
  return WSExecute.Executer.databaseConnectionInfo(System.Web.HttpContext.Current);
}

类型 3:

[WebMethod]
public XmlDocument databaseConnectionInfo()
{
  return this.convert(WSExecute.Executer.databaseConnectionInfo(System.Web.HttpContext.Current));
}

如您所见,函数几乎相同——它们都调用同一个工作类,只是它们的属性不同(Type1 与 Type2)或调用一个仅将字符串转换为 XMLDocument 的附加函数。

问题:C# 或 Visual Studio 如何帮助我创建某种模板或其他东西来管理它。我面临的问题是将有超过 100 个函数,并且接口将由不同的程序员管理,这在 C# 中并不都是好的。所以他们会忘记在三个不同的类/源中编写“相同”的代码:(

有谁知道如何解决 Type1 与 Type2 的问题(忘记 Type 3)。Type1 和 2 实际上是相同的来源,除了: 1. 类名不同 2. Type1 中的每个函数都有一个额外的 SoapRpcMethod 属性

现在我通过使用预处理器(我自己的程序)来解决这个问题,它从 1 个源生成 3 个源,然后调用 C# 编译器。它可以工作,但是对于不太熟悉 C# 编程的人来说很笨拙并且很难理解。Web Service 用于访问 Oracle 服务器,因此 c# Web Service 只是一个门面,Web Service 中没有应用程序逻辑,仅调用 PL/SQL 过程,因此 c# Web Service 由不熟悉 Windows/c# 的 Oracle 程序员管理。 .

TIA Matjaz

4

1 回答 1

0

我认为您要解决的问题是代码重复 - 您应该查看Template design pattern。这样,人们就不会只是“忘记”编写他们应该编写的冗余代码。

于 2013-04-29T08:42:22.033 回答