如何Map枚举?在proto文件中,.NET Core 6

ki1q1bka  于 2023-05-01  发布在  .NET
关注(0)|答案(1)|浏览(143)

我有这个模型类:

using StackExchange.Redis;
using System;
using System.Collections.Generic;
using Ucdp.Common.Enums.Vendor;

namespace Ucdp.Common.Industry
{
    public class VendorBasicDetailsByChannelModel
    {
        public Guid Id { get; set; }
        public string Name { get; set; }
        public VendorMode VendorMode { get; set; }
    }
}

在模型中,一个字段(VendorMode)具有ENUM模型(VendorMode)。
enum模型有4个enum类型

using System;
using System.Collections.Generic;
using System.Text;

namespace Ucdp.Common.Enums.Vendor
{
    public enum VendorMode
    {
        Shopping = 1,
        Discovery = 2,
        ShoppingAndDiscovery = 3
    }

   
}

and this is vendor.proto file

syntax = "proto3";

option csharp_namespace = "IndustryAPI.Protos";

import "google/protobuf/wrappers.proto";

message ListOfStrings {
    repeated string strings = 1;
}

enum VendorMode {
  VendorMode_UNSPECIFIED = 0;
  Shopping = 1;
  Discovery = 2;
  ShoppingAndDiscovery = 3;
}

message VendorModel {
    string Id = 1;
    string Name = 2;
    VendorMode VendorMode = 3;
}

service VendorService {
    rpc GetVendorBasicDetails(GetVendorBasicDetailsRequest) returns (GetVendorBasicDetailsResponse);
}

// requests
message GetVendorBasicDetailsRequest {
    string channelId = 1;
    string VendorCreatedDateStart = 2;
    string VendorCreatedDateEnd = 3;
}

message GetVendorBasicDetailsResponse {
    repeated VendorModel Vendor = 1;
}

I want to map each field with message
var Vendor = new VendorModel
                    {
                        Id = vendor.Id.ToString(),
                        Name = vendor.Name,
                        VendorMode = vendor.VendorMode
                    };

如何Map枚举?

3qpi33ja

3qpi33ja1#

首先安装nuget包AutoMapper
然后安装其依赖项AutoMapper Dependency

Using AutoMapper;

namespace sample.auto
{

    public class Mapper : Profile
    {
        public Mapper()
        {
            CreateMap<vendorBasicDetailsbyChannelModel , VendorMode>().ReverseMap();
        }
    }
}

并在程序类中添加此依赖:

builder.Service.AddAutoMapper(typeof(Program).Assembly);

最后,在ProtoBuff服务中使用***IMapper依赖项***就足够了

相关问题