FileInfo的空对象模式

时间:2013-11-28 12:48:03

标签: c# .net file design-patterns fileinfo

我有一个返回FileInfo - 对象的方法。调用方法fooFile.FullName后调用。

一切都很好,但有一种情况FileInfo可以是null,但我不想(丑陋)空检查调用方法的位置。

我需要的是某种null-FileInfo(Null-Object-Pattern)。调用fooFile.FullName返回空字符串就足够了。 遗憾的是new FileInfo(string.Empty)不起作用。

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

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

2 个答案:

答案 0 :(得分:4)

你可以使用??运算符在需要的地方使用默认的FileInfo,静态变量代表什么是默认的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.
}

默认文件信息类:

public static class DefaultFileInfo
{
    public static readonly FileInfo Value = new FileInfo("null");
}

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

答案 1 :(得分:3)

空检查的问题是什么?我不明白你的意思...... 如果您确实想要避免这种空检查,您可以使用扩展方法,但我不能建议您这样做...

public static class Extensions
{
    public static string GetFullName(this FileInfo fInfo)
    {
        if (fInfo == null)
        {
            return String.Empty;
        }
        return fInfo.FullName;
    }
}

然后

FileInfo fInfo = // ... ;
string fullName = fInfo.GetFullName();