Как в using использовать параметр project.Directory ?

ZUMAS

Client
Регистрация
16.09.2015
Сообщения
22
Благодарностей
2
Баллы
3
в папке с проектом создана подпапка sound и в ней лежат звуковые файлы.

В using кладу следующее:
Код:
    public class My
    {

        public static void Sound (string param)
        {
            string filename = String.Empty;
            switch (param) {
                case "ok":
                    filename = project.Directory + "/sound/" +"ok.wav";
                    break;
                case "error":
                    filename = project.Directory + "/sound/" +"error.wav";
                    break;
                case "done":
                    filename = project.Directory + "/sound/" +"done.wav";
                    break;                   
                default:
                    filename = param;
                    break;                   
            }
            System.Media.SoundPlayer player = new System.Media.SoundPlayer(@filename);
            player.Play();
        }
    }
Если строчки поменять напрямую:
Код:
filename = "D:/ZennoTemplate/test/sound/ok.wav"; // и т.п.
То при запуске My.Sound("ok"); всё работает,

а так выскакивает ошибка:
Код:
    09:36:13    Компиляция кода проекта Ошибка при компиляции общего кода "CS0103" "The name 'project' does not exist in the current context". [Строка: 42; Cтолбец: 17]
    09:36:13    Компиляция кода проекта Ошибка при компиляции общего кода "CS0103" "The name 'project' does not exist in the current context". [Строка: 45; Cтолбец: 17]
    09:36:13    Компиляция кода проекта Ошибка при компиляции общего кода "CS0103" "The name 'project' does not exist in the current context". [Строка: 48; Cтолбец: 17]
как я понимаю, это значит, что имя project не существует в данном (не знаю как сказать, ну наверное пространстве имён). А как его добавить в using пространство?

Я хочу сделать несколько универсальный код, чтобы он мог работать из любой директории.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Кроме string param передавайте IZennoPosterProjectModel project как параметр
 
  • Спасибо
Реакции: ZUMAS

ZUMAS

Client
Регистрация
16.09.2015
Сообщения
22
Благодарностей
2
Баллы
3
Просите великодушно, но я так и не понял, что нужно и куда передавать. Дело в том, что если этот параметр передавать сразу в функцию, то на мой взгляд можно просто передать так: My.Sound("ok", project.Directory);

Но в том та вся и суть, что я хотел чтобы этот параметр был изначально в using. Получается, что его туда добавить никак нельзя? Или я вас вообще не правильно понимаю?
 
  • Спасибо
Реакции: LightWood

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
C#:
    public class My
    {
        public static void Sound (IZennoPosterProjectModel project, string param)
        {
            string filename = String.Empty;
            switch (param) {
                case "ok":
                    filename = project.Directory + "/sound/" +"ok.wav";
                    break;
                case "error":
                    filename = project.Directory + "/sound/" +"error.wav";
                    break;
                case "done":
                    filename = project.Directory + "/sound/" +"done.wav";
                    break;             
                default:
                    filename = param;
                    break;             
            }
            System.Media.SoundPlayer player = new System.Media.SoundPlayer(@filename);
            player.Play();
        }
    }
Вызывать так:
C#:
My.Sound(project,"ваша строка")
Далее у вас будет как надо работать Project.Directory и много всего остального.
 
  • Спасибо
Реакции: ZUMAS

ZUMAS

Client
Регистрация
16.09.2015
Сообщения
22
Благодарностей
2
Баллы
3
Тогда значит, я всё правильно понял. Только я передавал свой параметр первым, ну это не важно. Спасибо огромное. Я просто вдруг подумал, что после приведения строки к виду:
Код:
public static void Sound (string param, IZennoPosterProjectModel project)
этот параметр в using появится как бы по умолчанию и его не нужно будет передавать.Ну а теперь всё ясно.

---------------------
p.s. как вы на форуме добавляете код-си-шарп? Я в редакторе вижу только:

и у меня он "не раскрашенный" (без подсветки)
 

ZUMAS

Client
Регистрация
16.09.2015
Сообщения
22
Благодарностей
2
Баллы
3
А попробовал и получилось. Кто не знает, то при добавлении кода ручками заменить
Код:
[CODE] на [CODE=csharp]
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)