script# - 如何将外部 API 的属性导入到脚本中#

标签 script#

我在 Visual Studio 2010 中使用 Script# 导入 HTML5 Canvas 元素的 API。

它非常适合 FillRect()、MoveTo()、LineTo() 等。我已经声明了以下接口(interface),然后我可以在 C# 中针对它进行编码。然后,Script# 很好地将其转换为 JavaScript。

public interface ICanvasContext
{
    void FillRect(int x, int y, int width, int height);
    void BeginPath();
    void MoveTo(int x, int y);
    void LineTo(int x, int y);
    void Stroke();
    void FillText(string text, int x, int y);
}

我想包含采用简单字符串的 StrokeStyle 属性,但我不知道如何使用界面来执行此操作。以下接口(interface)属性在 JavaScript 中创建前缀,这会导致其失败。生成的 JavaScript 将与 HTML5 Canvas API 不匹配。

string StrokeStyle { get; set; }
string Font { get; set; }

前面的属性将创建此 JavaScript:

ctx.set_strokeStyle('#FF0');

如何让 Script# 生成没有 get_/set_ 前缀的 Canvas 上下文的简单赋值属性?

最佳答案

明白了!我使用的是接口(interface),这在某些情况下没问题,但是当我需要该字段时,我必须切换到抽象类,以免出现编译错误。

public abstract class Canvas : DOMElement
{
    public abstract CanvasContext GetContext(string dimension);
}

public abstract class CanvasContext
{
    public abstract void FillRect(int x, int y, int width, int height);
    public abstract void BeginPath();
    public abstract void MoveTo(int x, int y);
    public abstract void LineTo(int x, int y);
    public abstract void Stroke();
    public abstract void FillText(string text, int x, int y);

    public string StrokeStyle;
    public string Font;
}

这两个抽象类让我可以使用 Script# 中的 HTML5 Canvas API,如下所示:

public class MySample
{
    public void DoWork(string canvasId)
    {
        Canvas canvas = (Canvas) Document.GetElementById(canvasId);
        CanvasContext ctx = canvas.GetContext("2d");

        // ctx.FillRect(10,20,100,300);

        ctx.BeginPath();
        ctx.MoveTo(10, 10);
        ctx.LineTo(100, 300);
        ctx.MoveTo(20,10);
        ctx.LineTo(559,300);
        ctx.StrokeStyle = "#F00";
        ctx.Stroke();
    }
}

关于script# - 如何将外部 API 的属性导入到脚本中#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2859869/

相关文章:

javascript - 如何使用 Script# 生成缩小的 javascript?

javascript - Script# 的成熟度(与 GWT 相比)

script# - 在脚本#类中使用方法

jquery - 当我触发事件时,如何将参数传递给事件处理程序?

script# - 如何在 scriptSharp 中执行 console.log?

script# - 使用 Script# 来自一个项目的每页 Javascript 文件?

visual-studio-2013 - Script# 是否与 Visual Studio 2013 一起使用?

TypeScript VS ScriptSharp——权衡是什么?

脚本#,如何诊断 "Check that your C# source compiles and that you are not using an unsupported feature"

javascript - GWT 与 ScriptSharp 的优缺点