我想做一个重构,它允许我在初始化Fields时在其他地方定义字段集合,而不是内联.

我对错误消息感到困惑,因为我仍然在构造时提供值,而不是在构造后修改A(据我所知).

有没有人能帮我弄明白我做错了什么,告诉我如何提供一个没有内联定义的Field的列表?


A的定义:

public record A
{
    public A(String text)
    {
        this.Fields = new List<Field>();
    }

    public List<Field> Fields { get; }
}

前面的示例:

public static class MyClass
{
    public static A Build()
    {
        return new A("some date")
        {
            Fields =
            {
                Field1,
                Field2
            }
        }
    }
}

示例如下:

public static class MyClassyClass
{
    public static List<Field> GetMeTheFields()
    {
        return new List<Field>
        {
            Field1,
            Field2
        };
    }

    public static A Build()
    {
        return new A("some date")
        {
            Fields = GetMeTheFields()
        }
    }
}

但我收到以下错误消息:

不能将没有setter或无法访问setter的属性赋给

推荐答案

如果您不能修改类A以将init setter添加到Fields属性,则可以根据您的"示例后",以不同的方式向Fields提供Field的列表:

public static class MyClassyClass
{
    public static List<Field> GetMeTheFields()
    {
        return new List<Field>
        {
            Field1,
            Field2
        };
    }

    public static A Build()
    {
        var a = new A("some date");

        a.Fields.AddRange(GetMeTheFields());

        return a;
    }
}

Csharp相关问答推荐

为什么Microsoft.AspNetCore. htttp.FormFile不实现IDDisposable?

声明和实例化时抽象类和Generics的结合问题

禁用AutoSuggestBox项目更改时的动画?

为什么在GuardationRule的收件箱函数中,decode.TryParse(valueString,out valueParsed)在给出1.0.1时返回true?

在命令行中使用时安装,但在单击时不会安装

如果存在对CodeAnalysis.CSharp的引用,则不能引用netStandard2.0库

MAUI查询参数单一字符串项将不起作用

从c#列表中删除额外的对象&对象&>从ASP.NET WebForm返回json响应

ASP.NET核心REST API返回一个非常大的数字

如何忽略API JSON响应中的空字符串?

如何在页面重新加载后保持菜单切换状态

如何将MongoDB序列化程序设置为内部对象属性

什么时候接受(等待)信号灯?尽可能的本地化?

将内置的OrderedEumable&Quot;类设置为内部类有什么好处?

关于扩展文件类C#的矛盾

未在Windows上运行的Maui项目

是否可以从IQueryable T中获取一个IdentyEntry T>

C#Microsoft.CodeAnalysis.CSharp.Scriiting不等待并行.对于

正在try 将自定义字体添加到我的控制台应用程序

嵌套Blazor组件内的验证