其他分享
首页 > 其他分享> > 动态代码框架发布-CZGL.Roslyn

动态代码框架发布-CZGL.Roslyn

作者:互联网

CZGL.Roslyn

开源项目位置:https://github.com/whuanle/CZGL.CodeAnalysis

基于 Roslyn 技术的 C# 动态代码构建器以及编译器,开发者可以使用此库动态构建 C# 代码,并且通过指定条件编译代码。

动图演示

这里使用 Blazor 测试演示,代码可以在源码的 examples/BlazorExample 中找到。

Blazor 运行 CZGL.Roslyn

Blazor 演示的是以命名空间为单位的编译,你可以通过定制后台,实现只需要代码块即可运行,连函数头都不需要。更多功能等你来挖掘!

丰富的文档与示例

CZGL.Roslyn 拥有丰富的文档说明和 API 接口说明,让你使用起来得心应手!

文档 URL:https://1586052146.gitbook.io/codeanalysis

API URL:https://czgl-roslyn.github.io/czgl-roslyn

文档说明

API 文档

版本更新计划

该版本已经相当成熟了,根据用户使用 β 版本后的建议和需求进行更新;开始关注性能,进行性能测试已经采取措施对性能进行改进。

可以做什么

最大的特点就是动态代码构造以及动态编译,因此我们可以分为两部分讨论。

动态代码生成

动态编译

与 Natasha 的关系

Natsha 是一个非常优秀的动态代码框架,由大帅主导,形成了功能完整、性能强悍,并且兼容 .NET FX 4.6~.NET Core ↑ ,通过了大量性能测试以及高性能代码优化。

可以以强到不得了来形容。仓库地址:https://github.com/dotnetcore/Natasha

那为什么 还要写 CZGL.Rolysn 呢?

1,锻炼技术能力;

2,与 Natasha 不构成竞品, CZGL.Roslyn 尽可能做的轻量,开发者可以考虑业务大小,大型场景使用 Natasha;快速建设使用 CZGL.Roslyn;Natasha 学习曲线比较大,CZGL.Roslyn 学习上手比较快。

3,Natasha 功能完整,依赖比较多;CZGL.Roslyn 功能尽可能足够同时保存少量的依赖,体积小;

4,CZGL.Roslyn 适合写小工具,例如 dotnet-tool、数据库还原实体、为 ML.NET 提供快速代码生成等,适合作为小部件为你的程序提供额外的功能;Natasha 适合作为独立的一个产品去做,围绕 Natasha 构建更多功能;

论性能,Natasha 优秀;论功能完整性,Natasha 一整套大保健服务... ...

CZGL.Roslyn 相比 Natasha ,大概就只有 “轻量” 这个特点了,简直被秒杀。。。

我可以从这个框架学习到什么

框架特点是简单易用,你可以从中学习到大量的反射知识,以及 Roslyn 知识,甚至可能学习到 EMIT(后面我会使用这种技术优化性能)。

例如,如何通过取得特性中的属性值?

[Display(Name = "_Id")]
public int Id {get;set;}

一个 Type ,如何确定他是类、结构体、委托?

如果你查阅资料会发现,Type.IsClass 可以识别出类、委托;

以下代码为什么 JAVA 和 C# 执行结果不同?

public class A
{
    public void Test
    {
        Console.WriteLine("A");
    }
}
public class B:A
{
    // 隐藏父类 Test 函数
    public new void Test
    {
        Console.WriteLine("B");
    }
}

A a = new B();
a.Test();

目前 CZGL.Roslyn 处于初版,代码还处于非常简单的状态,逻辑也很简单,因此,如果你有意学习 C# 中的反射、动态代码技术等,想了解源代码在生成后如何通过反射获得信息、源代码会被如何编译等,CZGL.Roslyn 就是你最佳的选择。

标签:...,框架,代码,CZGL,Roslyn,动态,Natasha
来源: https://blog.51cto.com/u_10006690/2727597