2014-01-05 3 views
1

При работе над проектом CNA XNA я создал несколько методов для минимизации кода в методах LoadContent/Update/Draw по умолчанию. Мне интересно, можно ли перенести эти методы из файла Game1.cs в другой исходный файл, не инкапсулируя их в новый класс и не передавая ссылки на объекты?Разместить методы в другом исходном файле, не создавая новый класс

Я пробовал создать новый .CS-файл с использованием правильных заявлений и декларации пространства имен, но компилятор говорит мне, что ему не хватает объявления класса, поэтому я не верю, что делаю это правильно. В настоящее время я создал класс HelperMethod, который я создаю в верхней части файла Game1.cs, но было бы неплохо иметь возможность использовать что-то вроде include_once из PHP в C#.

Есть ли способ создать метод или файл функции и включить его в мой код, или я должен придерживаться класса HelperMethod?

ответ

1

Нет, вы не можете.

Все методы в C# должны находиться внутри объекта.

Вы думаете, что все это неправильно, если вы беспокоитесь о передаче ссылок. Ссылки - это легкий вес .. и вы только что прикололи голову преждевременной оптимизации.

+0

Преждевременная оптимизация? Похоже, он просто пытается сохранить размер файла. Это ничего не говорит о скорости запуска, это для людей. –

+0

"без инкапсуляции их в новый класс и передачи ссылок на объекты". Звуки OP беспокоятся о передаче ссылок вокруг ... вот что я имел в виду. –

+0

Я выбираю ваш ответ как правильный, потому что вы говорите о преждевременной оптимизации; термин, о котором я не слышал. Определенно описывает, что я сейчас переживаю, и буду полезен в будущих проектах. Благодаря! –

0

После прочтения этого:

Equivalent to PHP's include in C#

может показаться, что лучший курс действий, чтобы остаться с классом хелперов, что у меня в настоящее время на месте. Не похоже, что скомпилированные языки используют любую функцию include, которая просто добавляет код в текущий файл.

1

Вы также можете использовать частичные классы, чтобы разбить определение класса для нескольких файлов. См. Эту статью в MSDN для получения дополнительной информации: Частичные классы и методы (Руководство по программированию на C#) http://msdn.microsoft.com/en-us/library/wa80x488.aspx

0

+1 по предложению STLDeveloper по использованию частичных классов и методов.

Дополнительная идея: если это имеет смысл для того, что вы пытаетесь выполнить (особенно, если ваш код может быть повторно использован в других проектах XNA Game, которые у вас есть), создайте свой собственный класс игры, который расширяет Microsoft.Xna.Framework. Игра и унаследовать Game1 от этого. Это будет включать в себя методы, которые вы написали в отдельном файле .cs, но держите свой Game1.cs «меньше».

Game.cs:

public class Game : Microsoft.Xna.Framework.Game 
{ 
    /* Your methods here */ 
} 

Game1.cs:

public class Game1 : Game 
{ 
    /* More of your methods here */ 
} 
0

Может быть, вы ищете методы расширения?

Extension Methods

Или вы можете попробовать держать класс, который вмещает делегатов.

Delegates

Смежные вопросы