# aardio 范例: 编译运行 C# 代码，.NET 类型检测



```aardio
//aardio 编译运行 C# 代码，.NET 类型检测
//.NET 类型转换: https://www.aardio.com/zh-cn/docs/library-guide/std/dotNet/type-conversion.html

import dotNet; 
import console.init;

/*
需要注意在 aardio 中调用 CLR 编译器要避免使用 C# 6.0 语法（仅 VS 编译器可支持）。
CLR 4.0( .NET 4.0)支持 C# 4.0语法。CLR 4.0( .NET 4.5+)尽管版本号仍是 4.0, 但已支持 C# 5.0 语法（例如 async/await）。
而更早版本的 CLR 2.0 编译器（.NET 2.0/3.5 ）不支持 var ，lambda 这些语法。
Win10 开始已自带 .NET 4.6 ， 更早的过时系统一般不必考虑。

创建  C# 语言编译器:  https://www.aardio.com/zh-cn/docs/library-guide/std/dotNet/_.html#compiler
*/
var compiler = dotNet.createCompiler("C#");

//待编译的 C# 源码
compiler.Source = /******  
using System;

namespace CSharpLibrary  
{  
    public class Util  
    {    
        public static object TestDataType<T>(T parameter)
        {
            //使用 typeof 获取参数的类型
            Type parameterType = typeof(T);
            
            //内置类型别名表:https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/built-in-types
            Console.WriteLine("aardio 参数对应 C# 类型：\t{0} \n", parameterType);
            
            byte [] buffer = new byte[]{0x60,0x61};
            return buffer;
        } 
    }   
} 
******/ 

//编译 C# 到内存程序集，并导入 .NET 命名空间 
compiler.import("CSharpLibrary"); 

//要测试 C# 类型的 aardio 对象
var value = raw.buffer("测试字节串");

//使用 C# 编写的类构造对象实例 
var netUtil = CSharpLibrary.Util(); 

//调用实时编译的 C# 函数（模板参数，可传任意类型）
var result = netUtil.TestDataType(value); 

console.log("C# 返回值的 aardio 类型：",type(result),'\n\n\n' );
```

