FileInfo 的空对象模式

Mic*_*cha 5 .net c# design-patterns file fileinfo

我有一个返回FileInfo-object 的方法。调用后该方法fooFile.FullName被调用。

一切都很好,但有一种情况是FileInfocan be null,但我不希望在调用该方法的地方进行(丑陋的)空检查。

我需要的是某种空文件信息(空对象模式)。fooFile.FullName当调用返回空字符串时就足够了。不幸的new FileInfo(string.Empty)是不起作用。

搜索SO带来这个java-question,但答案对我没有帮助。

FileInfo有没有办法与 Null-Object-Pattern 结合使用?

Mig*_*elo 4

您可以使用该??运算符在需要时使用默认值FileInfo,并在某处使用静态变量表示默认文件信息:

public void MyMethod(FileInfo fi)
{
    // use default fileinfo if null is passed to this method
    fi = fi ?? DefaultFileInfo.Value;

    // method code...
    // do something with the fileinfo, it is not null for sure now.
}
Run Code Online (Sandbox Code Playgroud)

默认文件信息类:

public static class DefaultFileInfo
{
    public static readonly FileInfo Value = new FileInfo("null");
}
Run Code Online (Sandbox Code Playgroud)

如果您要使默认文件可读,当然您需要指定一个有效的文件名。