单声道 C# REPL System.Windows.Forms

mono C# REPL System.Windows.Forms

当我尝试从单声道 C# REPL 创建表单时 我无法访问 System.Windows.Forms 类

我可以毫无问题地使用 REPL 中的其他 .net 库。

有什么想法吗?

您可以根据需要在 REPL 中使用 LoadAssembly 和 LoadPackage:

  • LoadAssembly(字符串):加载给定的程序集,相当于 将 -r:NAME 传递给编译器。
  • LoadPackage(string): 加载 给定包,相当于将 -pkg:NAME 传递给编译器。

示例:

csharp> LoadAssembly("System.Windows.Forms")
csharp> using System.Windows.Forms
csharp> LoadAssembly("System.Drawing")
csharp> using System.Drawing
csharp> class MyApp : System.Windows.Forms.Form
    {
        public MyApp()
        {
            Label label;

            ClientSize = new System.Drawing.Size(250, 250);

            label = new Label();
            label.Text = "A Mono CSharp REPL Window";
            label.Dock = DockStyle.Fill;
            label.TextAlign = ContentAlignment.MiddleCenter;
            this.Controls.Add(label);
            Text = "Hello, Whosebug";
        }

        public static void Main()
        {
            Application.Run(new MyApp());
        }
    }
MyApp.Main()

仅供参考:如果您尝试生成动态 GUI,我会看一下 gsharp(来自 mono-tools),因为它有一个 GTK 窗格,您可以 add/remove 个小部件到该窗格。