Метод Load
может использоваться для загрузки множества различных типов контента, включая такие вещи, как изображения и звуки.Следовательно, он может возвращать экземпляры разных типов (например, Texture2d
и Effect
).
Существует два способа создания метода, который может это сделать.Во-первых, и проще всего, вы можете вернуть Object
, который является базовым классом каждого типа в мире .NET и XNA.
public object Load(string path) { /*...*/}
, вам придется использовать его таким образом:
Texture2D texture = (Texture2D)Content.Load("Textures//Road");
Второй способ - использовать дженерики.С помощью дженериков вы можете обрабатывать приведение для пользователя, делая его код проще.Общей версией этого метода будет:
public T Load<T>(string path)
{
return (T)Load(path);
}
Вы по-прежнему используете старую загрузку, но выполняете приведение (к любому типу T) перед возвратом значения.
Обобщения полезны, так как вы можете использовать их для создания безопасного типа кода, не создавая много-много версий специфичных для типа методов, например
public Texture2d LoadTexture2d(string path)
{
return (Texture2d)Load(path);
}
public Effect LoadEffect(string path)
{
return (Effect)Load(path);
}
//500 more versions omitted for brevity