Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有什么简单的方法可以自动生成这样的代码?_C#_Visual Studio_Generated Code - Fatal编程技术网

C# 有没有什么简单的方法可以自动生成这样的代码?

C# 有没有什么简单的方法可以自动生成这样的代码?,c#,visual-studio,generated-code,C#,Visual Studio,Generated Code,我有一个文件,将用于许多应用程序项目。这些文件的唯一区别是webservice引用名称。代码如下: public void Test(){ Kevin.ServiceReference1.Service1Client client = new Kevin.ServiceReference1.Service1Client(); // do something.... } 与上面的代码类似,“Kevin.ServiceReference1”将由指定的应用程序项目命名空间替换。 因此

我有一个文件,将用于许多应用程序项目。这些文件的唯一区别是webservice引用名称。代码如下:

public void Test(){
    Kevin.ServiceReference1.Service1Client client = new Kevin.ServiceReference1.Service1Client();
    // do something....
}
与上面的代码类似,“Kevin.ServiceReference1”将由指定的应用程序项目命名空间替换。
因此,根据DRY(不要重复你自己)的说法,我不应该只是将文件复制到许多项目中,然后手动重命名指定的部分。有什么方法可以轻松地将模板文件的某些部分替换为与项目相关的内容吗?

这不是一个干燥的问题;虽然这些文件看起来很相似,*但您并不是在重复自己,因为唯一的操作——变量的声明和赋值——对于每种类型都是不同的**

如果类有共同的用途,您可能希望为它们提供一个共同的父类,但您的示例中没有任何内容表明这些类实际上是以任何方式相关的


如果您正在寻找自动化流程的方法,以使自己更轻松,请查看(Microsoft免费)或。这里还有许多关于代码生成的其他主题。

这不是一个枯燥的问题;虽然这些文件看起来很相似,*但您并不是在重复自己,因为唯一的操作——变量的声明和赋值——对于每种类型都是不同的**

如果类有共同的用途,您可能希望为它们提供一个共同的父类,但您的示例中没有任何内容表明这些类实际上是以任何方式相关的


如果您正在寻找自动化流程的方法,以使自己更轻松,请查看(Microsoft免费)或。关于代码生成,这里还有很多其他的话题。

你有没有研究过微软的T4代码模板系统?这可能正是你需要的

链接:

您研究过微软的T4代码模板系统吗?这可能正是你需要的

链接:

如果文件中唯一更改的是名称空间和类名,则可以将所有其他常见功能提取到基类中。然后,针对每个不同的用法,创建一个从基类继承的派生类。派生类可以有一个简单的方法返回特定的名称空间/类。

如果文件中唯一改变的是名称空间和类名,那么您可以将所有其他常见功能提取到基类中。然后,针对每个不同的用法,创建一个从基类继承的派生类。派生类可以有一个简单的方法,返回特定的名称空间/类。

服务客户端是否共享类似的接口?他们正在使用完全相同的web服务接口您已经在每个项目中使用代理代码来重复自己了。通过仅为代理代码创建库项目并从其他项目中引用该项目,可以避免重复。是的,在这个解决方案中,代理代码确实有自己的名称空间。服务客户端是否共享类似的接口?他们使用的是完全相同的web服务接口。您已经在每个项目中重复使用代理代码了。通过仅为代理代码创建库项目并从其他项目中引用该项目,可以避免重复。是的,在这个解决方案中,代理代码有自己的名称空间。逻辑是完全相同的。除了生成代码的名称空间之外,这些应用程序使用的web服务也是相同的。但是我不能控制生成的服务引用代码的名称空间,可以吗?如果可以的话,这个问题可以用链接文件解决。我不同意你的观点。逻辑是完全相同的。除了生成代码的名称空间之外,这些应用程序使用的web服务也是相同的。但是我不能控制生成的服务引用代码的名称空间,可以吗?如果可以,这个问题可以用链接文件解决。是的,我现在就是这么做的。但问题是,代码依赖于web服务生成的实体,这又回到了名称空间问题。但问题是,代码依赖于web服务生成的实体,而这些实体又回到了名称空间问题上。真可惜。我去看看。如果有帮助的话,我会让你知道。我以前从未听说过T4。真可惜。我去看看。如果有帮助,我会告诉你的。