[英]Visual studio Templates or Code snippets to create classes and interfaces
我正在编写一些单元测试,并想创建一个模板/代码片段(不确定Visual Studio中的确切术语)。 简单来说,我想创建一些可以重复使用的样板代码。
即,用户将输入类的名称,并使用它来创建接口,类和一些方法定义。
例如,如果用户输入VATRate
IVATRate将在xyz.Common.Interfaces中创建
VATRateRepository将在xyz.BusinessLayer中创建
VATRateRepositoryTests将在xyz.BusinessLayer.Tests中创建
将定义VATRateREpositoryTests中的方法InsertVATRate_ShouldInsertNewRecord_WhenVatRateDoesNotExist UpsertVATRate_ShouldUpdateRecord_WhenRecordExist GetAllVATRate_ReadsAllRecords
等等..
您可以使用我的Visual Commander扩展程序对其进行自动化。 C#中命令的代码如下所示:
参考:Microsoft.VisualBasic
using EnvDTE;
using EnvDTE80;
using Microsoft.VisualBasic;
public class C : VisualCommanderExt.ICommand
{
public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package)
{
string className = Microsoft.VisualBasic.Interaction.InputBox("Class name", "Create tests",
"VATRate", -1, -1);
EnvDTE.ProjectItem f = DTE.ItemOperations.AddNewItem("Visual C# Items\\Code\\Class", className + "RepositoryTests.cs");
EnvDTE.CodeClass c = FirstClass(FirstNamespace(f.FileCodeModel.CodeElements).Children);
c.AddFunction("Insert" + className, vsCMFunction.vsCMFunctionFunction, vsCMTypeRef.vsCMTypeRefVoid);
}
private EnvDTE.CodeNamespace FirstNamespace(EnvDTE.CodeElements elements)
{
foreach(EnvDTE.CodeElement c in elements)
{
if(c is EnvDTE.CodeNamespace)
return c as EnvDTE.CodeNamespace;
}
return null;
}
private EnvDTE.CodeClass FirstClass(EnvDTE.CodeElements elements)
{
foreach (EnvDTE.CodeElement c in elements)
{
if (c is EnvDTE.CodeClass)
return c as EnvDTE.CodeClass;
}
return null;
}
}
如果您在解决方案中选择一个项目并从VCmd菜单运行命令,它将创建以下文件:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.