找不到扩展方法?

Extension method not found?

所以在环顾四周并尝试自己解决这个问题之后,我被困住了。我查看了以下帖子并确保我已经包括了他们所说的所有程序集(我在来这里之前已经完成了,但仔细检查以确保):

仔细检查了我的具有扩展名的文件和试图使用该扩展名的文件;还有其他可能的原因导致找不到扩展方法吗?

// 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));
        }
    }
}

备注

代码中的任何拼写错误都是此处的实际拼写错误,而不是代码本身。


更新

正如 @Brian Rasmussen 在评论中指出的那样,我没有从被扩展对象的实例中调用该方法。我还没有喝咖啡,所以我很抱歉,至少这是一个简单的修复!

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

要调用 PointToNDC 作为扩展方法,您需要一个 SpriteBatch 的实例。