单声道 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 个小部件到该窗格。
当我尝试从单声道 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 个小部件到该窗格。