# aardio 范例: 调用 .NET 之控制台操作



```aardio
//aardio 调用 .NET 之控制台操作
import dotNet; 
var compiler = dotNet.createCompiler("C#");
 
compiler.Source = /*** 
using System; 
namespace CSharpLibrary  
{  
    public class Object  
    {     
        public static void Test(){    
            System.Console.WriteLine("这是 C# 在控制台输出的内容"); 
        }
    }   
} 
***/ 
compiler.import("CSharpLibrary"); 

import console
console.log("只要调用 console 库打开控制台，就会自动绑定 .NET 控制台。")

/*
console 库函数会自动调用 console.open() 打开控制台。
如果控制台 console 库被打开，aardio 就会自动绑定 .NET 控制台。
*/
CSharpLibrary.Object.Test();

/*
console 打开控制台以后会向同一线程发送 "afterConsoleOpen" 事件。
订阅此事件就可以绑定控制台，以下是标准库 dotNet.appDomain 中的相关代码：

var reopenConsole = function(){

 	for(k,appDomain in __appDomainCache){
 		// ..io.utf8 用于判断R控制台是否  UTF-8 编码。
 		// aardio 在  Win10 1709 以上会将控制台默认设为 UTF-8 编码。
		appDomain.utility.ReopenConsole(!!..io.utf8); 
	}
}
if(::Kernel32.GetConsoleWindow()) reopenConsole();
..subscribe("afterConsoleOpen",reopenConsole);

当然，如果在导入 dotNet 库以前打开控制台，.Net 默认就会正确绑定。 
这些代码主要是修正在导入 dotNet 库以后再打开控制台导致 .NET 不能在控制台输出输入的问题。
*/

console.pause();
 
```

