C#"加载"一个对象的属性,在编译期间包含文件中的文本

时间:2017-07-07 02:52:11

标签: c# compilation

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

示例 -

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

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

如何做到这一点?

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

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

2 个答案:

答案 0 :(得分:0)

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

例如。如果您的代码为:

public string Text = "~placeholder_for_Text~"

程序会将“~placeholder_for_Text~”替换为banana.txt的实际内容

答案 1 :(得分:0)

如果在运行时只加载文件内容一次,您可以考虑使用以下代码:

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();
        }
    }
}