Метод расширения не найден? - PullRequest
0 голосов
/ 31 октября 2018

Так что после некоторого осмотра и попытки самостоятельно решить эту проблему, я застрял. Я просмотрел следующие посты и убедился, что я включил все сборки, как они заявили (что я сделал до приезда сюда, но дважды проверил, чтобы убедиться):

После двойной проверки моего файла с расширением и файла, пытающегося использовать расширение; Существуют ли другие возможные причины, по которым метод расширения не найден?

// Extension Class.
using SharpDX;
using SharpDX.Direct2D1;
namespace MyNamespace.Engine {
    public static class Utilities {
        public static Vector3 PointToNDC(this SpriteBatch sb, Size2 screenSize, Point p) {
            float x = 2.0f * p.X / screenSize.Width - 1.0f;
            float y = 1.0f - 2.0f * p.Y / screenSize.Height;
            return new Vector3(x, y, 0);
        }
    }
}

// Usage Class.
using MyNamespace.Engine;
using SharpDX;
using SharpDX.Direct2D1;
namespace MyNamespace.Prefabs {
    public class Sprite {
        public void Draw() {
            SpriteBatch.PointToNDC(new Size2(50, 50), new Point(0, 0));
        }
    }
}

Примечание

Любые опечатки в коде являются здесь реальными опечатками, а не в самом коде.


Обновление

Как указал Брайан Расмуссен *1033* в комментариях, я не вызывал метод из экземпляра расширяемого объекта. У меня еще не было кофе, поэтому мои извинения, по крайней мере, это было простое исправление!

SpriteBatch sb = new SpriteBatch(...);
sb.PointToNDC(...); // <- Works.

1 Ответ

0 голосов
/ 01 ноября 2018

Чтобы вызвать PointToNDC как метод расширения, вам нужен экземпляр SpriteBatch.

...