I am about to define an interface in my application that plug-in writers can implement to provide user-defined "export" capabilities. It’ll look something like this:
public interface IFooExporter { void ExportFoo(Foo foo, string path); }
However, I need to let the plug-in writers know (explicitly, not just in documentation) that "path" represents a folder, not a filename. It’s their responsibility to create the files as part of the export process.
What’s the best way to enforce that a path is a folder and not a filename? My best guess right now is to use DirectoryInfo instead of string:
public interface IFooExporter { void ExportFoo(Foo foo, DirectoryInfo folder); }
Is that a good solution, or are there pitfalls I’m not aware of with passing DirectoryInfo instances around?
Because you are not implementing the solution, then I agree with you solution of using the DirectoryInfo as a parameter. If you specify a string then there is no way to stop any string being passed.