C# “C”;“加载”;对象';在编译期间使用文件中的文本创建属性

C# “C”;“加载”;对象';在编译期间使用文件中的文本创建属性,c#,compilation,C#,Compilation,我想在编译期间将文本从文件加载到类的属性中 public class Banana { public string Text { get; set; } //contents of banana.txt goes in here } 范例- 我有一个名为banana.txt的文件,我想在编译期间将其内容放入banana类中 public class Banana { public string Text { get; set; } //contents of banan

我想在编译期间将文本从文件加载到类的属性中

public class Banana
{
     public string Text { get; set; }  //contents of banana.txt goes in here
}
范例-

我有一个名为banana.txt的文件,我想在编译期间将其内容放入
banana
类中

public class Banana
{
     public string Text { get; set; }  //contents of banana.txt goes in here
}
如何做到这一点

这样做的目的是,每当需要
Banana
对象的
文本时,不必读取文件,文件中的文本在编译时只需读取一次


注意:我必须从文件中读取,而不是将内容复制到变量或资源文件中。我意识到每个
对象都将具有相同的文本。)

实现这一点的一种方法是: 编写预构建事件。 在预构建事件中,调用一个程序。 这个程序可以是另一个C#程序 该程序将从banana.txt读取。 然后这个程序会重新生成你的源代码

例如,如果您的代码为:

public string Text = "~placeholder_for_Text~"

程序将用香蕉的实际内容替换“~~占位符FordX文本”。TXT

< P>如果在运行时只加载一次文件内容是正确的,您可以考虑使用以下代码:

public class Banana
{
    public string Text
    {
        get
        {
            return fileContent;
        }
    }

    private static string fileContent;

    static Banana()
    {
        using (var reader = File.OpenText("banana.txt"))
        {
            fileContent = reader.ReadToEnd();
        }
    }
}

在应用程序启动(运行时)时只加载一次文件可以吗?Ashin,这将是一个比每次调用对象时都加载它更好的解决方案。请检查我发布的答案。感谢Ashin的建议,我可能最终会使用这样的解决方案,但我仍然想知道是否有一种简单的方法可以在编译期间在代码中实现它。