我正在尝试为 dotnet core 编写一个自定义代码生成器,但到目前为止几乎没有成功,因为它周围的文档有限。
仔细研究了 CodeGeneration 源代码,了解了如何从命令行触发生成器以及它的内部工作原理。
由于 dotnet core 中可用的生成器不能满足我的需求,我尝试编写自己的 CodeGenerator,但似乎无法通过“dotnet aspnet-codegenerator”命令调用它。下面是我的自定义代码生成器(目前没有实现 - 我的目标是能够从 dotnet cli 触发它并以异常结束),
namespace TestWebApp.CodeGenerator
{
[Alias("test")]
public class TestCodeGenerator : ICodeGenerator
{
public async Task GenerateCode(TestCodeGeneratorModel model)
{
await Task.CompletedTask;
throw new NotImplementedException();
}
}
public class TestCodeGeneratorModel
{
[Option(Name = "controllerName", ShortName = "name", Description = "Name of the controller")]
public string ControllerName { get; set; }
[Option(Name = "readWriteActions", ShortName = "actions", Description = "Specify this switch to generate Controller with read/write …Run Code Online (Sandbox Code Playgroud) 在将现有同步方法转换为异步方法时,我不小心在其中一个方法上使用了“async void”,这导致了一些意外行为。
以下是我实际执行的更改类型的简化示例,
public IActionResult Index()
{
var vm = new ViewModel();
try
{
var max = 0;
if (_dbContext.OnlyTable.Any())
{
max = _dbContext.OnlyTable.Max(x => x.SomeColumn);
}
_dbContext.Add(new TestTable() { SomeColumn = max + 1 });
_dbContext.SaveChanges();
MakePostCallAsync("http:\\google.com", vm);
if (!string.IsNullOrEmpty(vm.TextToDisplay))
{
vm.TextToDisplay = "I have inserted the value " + newmax + " into table (-1 means error)";
}
else
{
vm.TextToDisplay = "Errored!";
}
}
catch (Exception ex)
{
vm.TextToDisplay = "I encountered error message - \"" + …Run Code Online (Sandbox Code Playgroud) 所以,我正在修改我的一个代码,最后写了这样的东西,
class TestClass
{
static void Main(string[] args)
{
var lstObj = new List<List<string>>()
{
new List<string>() { "ABC","DEF", },
new List<string>() {"GHI","JKL" },
};
}
}
Run Code Online (Sandbox Code Playgroud)
注意以下行中的额外逗号(","),
new List(){"ABC","DEF",},//在"DEF"之后
new List(){"GHI","JKL"},//'}'之后'
在意识到错字之后,我决定取消Build,更正它并重新启动Build.但是我太晚了,令我惊讶的是,Build已经成功完成了.
我只是想知道这是否是正确的语法或者它是否具有任何特殊含义.
试图查找支持此文档但未找到任何文档.尝试查找C#语言规范,理解与此相关的任何内容都超出我的意义.