一般填充不同的类成员

2024-01-08

我正在开发一个具有多个 (11) Web 服务调用的 Web 服务应用程序。

对于每个 Web 服务,我需要从字符串数组填充 Soap Body,如下所示:

if (aMessage[(int)DCSSCustomerUpdate_V3.Branch].ToString().Length != 0)
{
    wsSoapBody.Branch = aMessage[(int)DCSSCustomerUpdate_V3.Branch].ToString();
}

aMessage[int]是字符串数组,[int] 由枚举常量定义 - 在本例中,它的定义如下:

private enum DCSSCustomerUpdate_V3
{
    MsgType = 0,
    MsgVersion = 1,
    WSName = 2,
    ReplyTo = 3,
    SourceSystem = 4,
    ...
}

分部类中的属性名称与枚举常量匹配,所以我想我也会传入枚举常量?

The 部分类在 wsdl 中定义如下:

public partial class DCSSCustomerUpdateType 
{
    private string instIdField;
    private string branchField;
    ...
}

而不是分别对每个项目执行此操作(在 11 个自定义项目中的每一个项目中)service类),我想知道有没有办法传递部分类wsSoapBody(以及字符串数组)并循环遍历类的所有成员,从字符串数组中分配值?

EDIT:

我搜索并发现SO:531384/如何循环遍历一个类的所有属性? https://stackoverflow.com/questions/531384/how-to-loop-through-all-the-properties-of-a-class

所以我尝试了这个:

    public static void DisplayAll(Object obj, string[] aMessage)
    {
        Type type = obj.GetType();
        PropertyInfo[] properties = type.GetProperties();

        foreach (PropertyInfo property in properties)
        {
            string value = aMessage[property.Name].ToString();
            System.Diagnostics.Debug.WriteLine("Name: " + property.Name + ", Value: " + property.GetValue(obj, null));
        }
     }

but string value = aMessage[property.Name].ToString();不会编译 - 因为它正在寻找从枚举常量返回的 int ...

那么我该去哪里呢?


Try so

DCSSCustomerUpdate_V3 t = (DCSSCustomerUpdate_V3)Enum.Parse(typeof(DCSSCustomerUpdate_V3), property.Name);
 string value = aMessage[(int)t].ToString();

你也可以使用该方法枚举尝试解析 https://msdn.microsoft.com/en-us/library/dd991317%28v=vs.110%29.aspx

对于泛型枚举类型或多或少如此

 public static void DisplayAll<TEnum>(Object obj, string[] aMessage) where TEnum : struct,  IComparable, IFormattable, IConvertible
        {
            if (!typeof(TEnum).IsEnum)
            {
                throw new ArgumentException("T must be an enumerated type");
            }

            Type type = obj.GetType();
            PropertyInfo[] properties = type.GetProperties();

            foreach (PropertyInfo property in properties)
            {
                TEnum t = (TEnum)Enum.Parse(typeof(TEnum), property.Name);
                string value = aMessage[t.ToInt32(Thread.CurrentThread.CurrentCulture)].ToString();
                System.Diagnostics.Debug.WriteLine("Name: " + property.Name + ", Value: " + property.GetValue(obj, null));
            }
        }

看到这个帖子创建将 T 约束为枚举的通用方法 https://stackoverflow.com/questions/79126/create-generic-method-constraining-t-to-an-enum

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一般填充不同的类成员 的相关文章

  • 以编程方式检查页面是否需要基于 web.config 设置进行身份验证

    我想知道是否有一种方法可以检查页面是否需要基于 web config 设置进行身份验证 基本上如果有这样的节点
  • 向 ExpandoObject 添加方法时,“关键字 'this' 在静态属性、静态方法或静态字段初始值设定项中无效”

    我尝试向 ExpandoObject 添加一个动态方法 该方法将返回属性 动态添加 给它 但它总是给我错误 我在这里做错了什么吗 using System using System Collections Generic using Sys
  • 如何创建可以像 UserControl 一样编辑的 TabPage 子类?

    我想创建一个包含一些控件的 TabPage 子类 并且我想通过设计器来控制这些控件的布局和属性 但是 如果我在设计器中打开子类 我将无法像在 UserControl 上那样定位它们 我不想创建一个带有 UserControl 实例的 Tab
  • 使用post方法将多个参数发送到asp.net core 3 mvc操作

    使用 http post 方法向 asp net mvc core 3 操作发送具有多个参数的 ajax 请求时存在问题 参数不绑定 在 dot net 框架 asp net web api 中存在类似的限制 但在 asp net mvc
  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • POCO HTTPSClientSession 发送请求时遇到问题 - 证书验证失败

    我正在尝试使用 POCO 库编写一个向服务器发出 HTTPS 请求的程序 出于测试目的 我正在连接到具有自签名证书的服务器 并且我希望允许客户端进行连接 为了允许这种情况发生 我尝试安装InvalidCertificateHandler这是
  • 暂停下载线程

    我正在用 C 编写一个非常简单的批量下载程序 该程序读取要下载的 URL 的 txt 文件 我已经设置了一个全局线程和委托来更新 GUI 按下 开始 按钮即可创建并启动该线程 我想要做的是有一个 暂停 按钮 使我能够暂停下载 直到点击 恢复
  • 访问者和模板化虚拟方法

    在一个典型的实现中Visitor模式 该类必须考虑基类的所有变体 后代 在许多情况下 访问者中的相同方法内容应用于不同的方法 在这种情况下 模板化的虚拟方法是理想的选择 但目前这是不允许的 那么 模板化方法可以用来解析父类的虚方法吗 鉴于
  • 如何从网站下载 .EXE 文件?

    我正在编写一个应用程序 需要从网站下载 exe 文件 我正在使用 Visual Studio Express 2008 我正在使用以下代码 private void button1 Click object sender EventArgs
  • 如何重置捕获像素的值

    我正在尝试创建一个 C 函数 该函数返回屏幕截图位图中每四个像素的 R G 和 B 值 这是我的代码的一部分 for int ix 4 ix lt 1366 ix ix 4 x x 4 for int iy 3 iy lt 768 iy i
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • 获取 2 个数据集 c# 中的差异

    我正在编写一个简短的算法 它必须比较两个数据集 以便可以进一步处理两者之间的差异 我尝试通过合并这两个数据集并将结果更改放入新的数据集来实现此目标 我的方法如下所示 private DataSet ComputateDiff DataSet
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • 有没有一种简单的方法可以让 Visual Studio 2015 使用特定的 ToolsVersion?

    使用特定版本构建项目或解决方案时msbuild我可以使用以下命令选择早期的 net 工具链 toolsversion or tv switch C Program Files x86 MSBuild 14 0 bin msbuild tv
  • 在类的所有方法之前运行一个方法

    在 C 3 或 4 中可以做到这一点吗 也许有一些反思 class Magic RunBeforeAll public void BaseMethod runs BaseMethod before being executed public
  • 是否可以有一个 out ParameterExpression?

    我想定义一个 Lambda 表达式out范围 有可能做到吗 下面是我尝试过的 C Net 4 0 控制台应用程序的代码片段 正如您在 procedure25 中看到的 我可以使用 lambda 表达式来定义具有输出参数的委托 但是 当我想使
  • 转到定义:“无法导航到插入符号下的符号。”

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我今天突然开始在我的项目中遇到一个问题 单击 转到定义 会出现一个奇怪的错误 无法导航到
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • 实例化 Microsoft.Office.Interop.Excel.Application 对象时出现错误:800700c1

    实例化 Microsoft Office Interop Excel Application 以从 winforms 应用程序生成 Excel 时 出现以下错误 这之前是有效的 但突然间它停止工作了 尽管代码和 Excel 版本没有变化 我

随机推荐

  • 使用“extern template”来防止模板类的隐式实例化

    考虑以下代码片段 template
  • 提起过滤器以强制 ssl

    在 struts 应用程序中 我有一个过滤器 强制只能通过重定向通过 https 访问某些页面 我正在考虑将其移植为 lift 所以我的问题是 在这种环境中 是否有一种 lift 方式来实现此类过滤器 或者它与 struts 中的类似 相同
  • Android:文本视图数组

    我正在制作一个应用程序 我想在其中更改字符串数组中文本视图的文本 为此 我需要制作文本视图数组 如何做到这一点 谁能帮我解决这个问题 您可以像这样创建 TextView int textViewCount 10 TextView textV
  • 使用 ActivityLifecycleCallbacks 自动记录 Android 生命周期事件?

    我正在尝试使用 ActivityLifecycleCallbacks 自动捕获和记录 Android 生命周期事件 但是至少可以说 有关此问题的文档很少 public void registerActivityLifecycleCallba
  • 通知系统设计

    我需要为我们自制的 ERP 系统设计通知系统 当不同的事情发生时 它会向用户发送通知 当前的系统很简单 如果发生了某些事情 例如 用户更改了用户个人资料中的电话号码 则会向会计师发送一封电子邮件 这里有一些缺点 如果用户更改了两次 会计师将
  • Java可扩展枚举

    有没有办法编写一个可以扩展的枚举 我希望有几种方法始终可用于我的枚举 例如 我对数据库字段使用枚举 我在数据库中包含实际的字段名称 public enum ORDERFIELDS OrderID Order ID private Strin
  • 如何在GWT中删除jsarray中的值?

    我有两个问题 1 是否可以使用 pop 方法删除 jsarray 中的任何值或仅删除最后一个值 2 如何从 jsarray 中删除或删除一个值 有人可以发布一个例子吗 这里是这样的 public JsArray
  • Gradle 任务将 Maven 存储库中的 jar 放入项目 lib 文件夹中

    http blog jonasbandi net 2014 03 running nodejs applications on jvm with html http blog jonasbandi net 2014 03 running n
  • 如何从 Android Studio 构建所有产品风格?

    我的 gradle 文件有很多风格 def versionName 1 19 def applicationId com site app productFlavors CafebazarPro applicationId applicat
  • 摆脱 ATLTRACE 输出中显示的 atlTraceGeneral 类别

    升级到 VS2013 后 我开始以 atlTraceGeneral 我的输出 格式接收所有 ATLTRACE2 消息 e g ATLTRACE T This is my data d n 124 显示为 dllmain cpp 1121 a
  • 用于记录方法调用和异常的 WCF 服务属性

    我需要记录 WCF 服务中的每个方法调用以及引发的任何异常 这导致了很多冗余代码 因为每个方法都需要包含类似于这样的样板 OperationContract public ResultBase
  • 用户点击我的 EditText 后如何执行某些操作

    我有一个EditText这显示了时间 用户点击后EditText我想展示一个TimePickerDialog 所以我设置了一个View OnClickListener to my EditText But the OnClickListen
  • git 如何跟踪远程存储库中的版本?

    我的理解是 当进行推送时 远程存储库中的代码会更新 git 实际上如何跟踪发布的版本 在 git flow 的上下文中 远程存储库是否还会随我的代码一起提取任何元数据 还是仅提取代码 我对使用 git flow 比较陌生 它更新远程跟踪分支
  • Jetpack Compose - 文本居中

    我正在使用 Jetpack Compose 创建一个简单的闪存卡 这个想法是 你点击闪存卡 它就会给你答案 但是 我陷入了一个基本问题 不幸的是 我什至找不到官方文档 所以我的学习风格一直信任自动更正系统 无论如何 我认为问题出在 Box
  • 如何正确分割这个字符串列表?

    我有一个这样的字符串列表 z 2 44 4 55 z 88 我怎样才能在列表中拆分这个字符串 使其类似于 z 2 44 4 55 z 88 我尝试过使用split然而 已经有方法将 44 分成 4 和 4 我不知道还能尝试什么 您可以使用正
  • 如何编写Linux驱动模块调用/使用另一个驱动模块?

    我正在开发一个 Linux 驱动程序可加载模块 我必须在我的驱动程序中使用另一个设备 某种驱动程序堆叠在另一个驱动程序上 如何在我的驱动程序中调用 使用其他驱动程序 我认为它们都在内核中 所以可能有一种方法可以直接使用另一个驱动程序 您将需
  • FileStream.close() 不会为其他进程释放文件

    我在 Page Load 调用的函数中有以下代码 启动 Visual Studio 后首次加载页面时 一切正常 但此后对文件的任何其他打开调用都会返回IOException File is in use by another process
  • Expo EAS:如何将eas更新分支与构建通道链接?

    我有一个带有 EAS 的 expo v 46 0 0 项目 具有以下构建配置 eas json cli version gt 1 1 0 build production channel production env APP ENV pro
  • 找不到 Flyway maven 插件

    在我的 pom xml 中 我有
  • 一般填充不同的类成员

    我正在开发一个具有多个 11 Web 服务调用的 Web 服务应用程序 对于每个 Web 服务 我需要从字符串数组填充 Soap Body 如下所示 if aMessage int DCSSCustomerUpdate V3 Branch