私はC#開発者であり、ファクトリパターンを使用して、ハードディスク上のファイルまたはディレクトリを表すオブジェクトを作成したいと考えています。FileInfoとDirectoryInfoは、その目的で使用される.NETのクラスですが、それらの代わりに、それらをラップする独自のIFileInfoおよびIDirectoryInfoインターフェイスが必要です。組み込みのクラスではなくカスタムインターフェイスを使用する理由は、ファイルシェルアイコンなどのいくつかの追加プロパティを追加したいからです...
そこで、ファクトリパターンを使用して、ファイル/ディレクトリパスの特定の文字列に対してIFileInfoとIDirectoryInfoのインスタンスを作成したいと思います。
したがって、ファクトリクラスは次のようになります。
public class MyFileInfoFactory
{
IFileInfo Create(string filePath)
{
System.IO.FileInfo file = new System.IO.FileInfo(filePath);
// turn FileInfo to my IFileInfo etc...
}
}
System.IO.FileInfoドキュメント(FileInfo MSDN)を見ると、スローされる可能性のある例外がいくつかあることがわかります。私の質問は、ファクトリのCreate()メソッドでこれらすべての例外を処理する必要があるかどうかです。または、MyFileInfoFactory.Create()を呼び出しているコードにそれらを上向きに伝播させる必要がありますか?
最初の解決策が進むべき道である場合、次のステップは何でしょうか?たとえば、nullを返すか、InnerExceptionプロパティを新しいFileInfo()コンストラクターからスローされた実際の例外に設定してカスタム例外をスローする必要がありますか?
この具体的なシナリオの場合のベストプラクティスは何でしょうか...