Я знаю, что методы virtual
и static
являются противоположными понятиями, но я думаю, что иногда имеет смысл использовать их вместе. По этой теме было довольно много похожих вопросов по SO, но следующий сценарий еще не был рассмотрен.
Есть интерфейс C #, который выглядит так:
interface IVertexMeshLoader
{
VertexMesh LoadFromFile(string fname);
}
Реализация этого может выглядеть следующим образом:
class VertexMeshLoaderObj : IVertexMeshLoader
{
public VertexMesh LoadFromFile(string fname) { .. }
}
Теперь я хотел бы иметь возможность вызывать метод без экземпляра объекта, но я не могу сделать метод LoadFromFile()
статическим, поскольку он реализует интерфейс.
Лучшее решение, которое я до сих пор разрабатывал, - это написать статический метод LoadFromFileStatic()
, который содержит реальный код. LoadFromFile()
тогда просто называет это. Не очень красиво, имхо.
Я также мог бы создавать экземпляр VertexMeshLoadObj
каждый раз, когда я хочу вызвать метод, но это еще хуже.
Есть ли лучшие способы? Спасибо: -)