小编jjk*_*les的帖子

为 Dotnet Core 编写自定义代码生成器

我正在尝试为 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)

c# code-generation asp.net-core dotnet-cli

7
推荐指数
1
解决办法
5509
查看次数

DbContext 在 Async 方法中过早处理

在将现有同步方法转换为异步方法时,我不小心在其中一个方法上使用了“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)

c# asynchronous entity-framework async-await asp.net-core

2
推荐指数
2
解决办法
4979
查看次数

C# - 对象初始化器的语法

所以,我正在修改我的一个代码,最后写了这样的东西,

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#语言规范,理解与此相关的任何内容都超出我的意义.

c#

1
推荐指数
1
解决办法
111
查看次数