更新时间:2025-08-14 GMT+08:00
分享

使用Visual Studio开发C#函数

新增json序列化和反序列化接口,并提供HC.Serverless.Function.Common.JsonSerializer.dll 。

提供的接口如下:

T Deserialize<T>(Stream ins):反序列化值传递到Function处理程序的对象中。

Stream Serialize<T>(T value):序列化值传递到返回的响应负载中。

本文以Visual Studio 2022新建一个.NET Core 6.0的“ClassLibrary”工程为例,其他运行时版本方法类似。

步骤一:构建项目

  1. 在Visual Studio中选择“创建新项目”,如图1所示选择“类库”,单击“下一步”,选择框架为“.NET 6.0”创建项目。
    图1 新建项目

  2. 图2所示,选择解决方案资源管理器中“ClassLibrary”工程,单击鼠标右键,单击“添加项目引用”。
    图2 添加引用

  3. 选择“浏览”,单击“浏览(B) ”,选择下载的dll文件中的三个库进行引用,单击“确定”。

    dll文件中一共有三个库:HC.Serverless.Function.Common.dll、HC.Serverless.Function.Common.JsonSerializer.dll、Newtonsoft.Json.dll。

  4. 引用成功后界面如图3所示。
    图3 完成引用

步骤二:打包代码

本例所用示例代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using HC.Serverless.Function.Common;
using System;
using System.IO;

namespace ClassLibrary2
{
    public class Class1
    {
        public Stream ContextHandlerSerializer(Stream input, IFunctionContext context)
        {
            var logger = context.Logger;
            logger.Logf("CSharp runtime test(v1.0.2)");
            JsonSerializer test = new JsonSerializer();
            TestJson Testjson = test.Deserialize<TestJson>(input);
            if (Testjson != null)
            {
                logger.Logf("json Deserialize KetTest={0}", Testjson.KetTest);
            }

            return test.Serialize<TestJson>(Testjson);
        }

        public class TestJson
        {
            public string KetTest { get; set; }//定义序列化的类中的属性为KetTest

        }
    }
}
  1. 图4所示,单击菜单栏的“生成 > 生成解决方案”,拷贝输出框中生成的dll文件的路径。
    图4 生成文件

  2. 图5所示,在本地该路径的文件夹中查看生成的文件。
    图5 文件
  3. 在该文件夹中新建“ClassLibrary.runtimeconfig.json”文件并填入以下内容。完成后文件中共有7个文件。
    {
        "runtimeOptions": {
            "framework": {
                "name": "Microsoft.NETCore.App",
                "version": "6.0.0"
            }
        }
    }
    • *.runtimeconfig.json文件的名称为程序集的名称。
    • 文件内容中的version为项目属性中的目标框架的版本号。
  4. 将该文件夹中的文件打包为zip格式压缩包。请注意不要将整个文件夹进行打包,需确保压缩包解压后直接出现7个文件。

步骤三:测试函数

  1. 在华为云FunctionGraph控制台新建一个C#(.NET Core 6.0)空白事件函数,如图6所示上传4打包完成的zip代码包。
    图6 上传代码包

  2. 图7所示选择“设置 > 常规设置”,将函数执行入口配置为"ClassLibrary2::ClassLibrary2.Class1::ContextHandlerSerializer",单击“保存”
    图7 配置函数执行入口

  3. 回到“代码”页签,单击“测试”配置测试事件。如图8所示,将key修改为“KetTest”即可识别出对应的value。
    图8 配置测试事件

    KetTest:定义序列化的类中的属性为KetTest.

  4. 单击“测试”,查看测试执行结果。
    图9 查看执行结果

相关文档