2008-11-26 2 views
0

Я собираюсь определить интерфейс в моем приложении, который могут использовать плагины для обеспечения пользовательских «экспортных» возможностей. Это будет выглядеть примерно так:Как я могу сообщить разработчику моего интерфейса, что параметр «путь» представляет собой папку?

public interface IFooExporter 
{ 
    void ExportFoo(Foo foo, string path); 
} 

Однако, мне нужно, чтобы плагин писатели знает (в явном виде, а не только в документации), что «путь» представляет собой папку, а не имя файла. Их ответственность заключается в создании файлов как части процесса экспорта.

Каков наилучший способ обеспечить, чтобы путь был папкой, а не именем файла? Моя догадка прямо сейчас использовать DirectoryInfo вместо строки:

public interface IFooExporter 
{ 
    void ExportFoo(Foo foo, DirectoryInfo folder); 
} 

Это хорошее решение, или есть подводные камни, я не в курсе с передачей экземпляров DirectoryInfo вокруг?

+0

Вы можете заставить их использовать DirectoryInfo, что не так, или выбросить ArgumentException, если вы используете строку, и они передают имя файла. – TimothyP 2008-11-27 09:21:28

+0

Другой способ, Тимоти. Я передам им строку (это для авторов плагинов). Я хочу убедиться, что они реализуют метод таким образом, что он не предполагает, что строка представляет имя файла. – 2008-11-27 10:50:18

ответ

1

Поскольку вы не внедряете решение, я согласен с вами в решении использовать DirectoryInfo в качестве параметра. Если вы укажете строку, нет способа остановить переданную строку.

1

Используйте комментарии XML, они появятся в всплывающем окне Visual Studio Intellisense.

/// <summary> 
/// Type in the text you want to appear 
/// </summary> 
+0

Как я уже сказал в этом вопросе, я хочу, чтобы это было явным в интерфейсе, а не только документацией. – 2008-11-26 22:33:03

+0

Комментарии в intellisense проистекают из конкретной реализации, а не интерфейса. – benPearce 2008-11-26 22:46:05

1

Назовите свою переменную более явно. Это просто путь? Вы говорите, что это не так, но вы все равно оставляете его с общим именем. Назовите его folderPath и будет меньше путаницы и меньше нужно явно сообщать об этом исполнителям.