Geode本机客户端反序列化Pdx实例Impl

2023-12-10

我有一个 REST 客户端,它使用 Json 数据填充 Geode 区域,Geode REST API 会自动将其转换为 PdxInstance 类型。

该区域触发 C# 本机客户端侦听器AfterCreate(EntryEvent<TKey, TVal> ev)其中TVal type ev.NewValue被视为类型PdxInstanceImpl看起来像:

PDX[7534066,__GEMFIRE_JSON]{@type=MyClass, Field1=Value1, Field2=Value2}

我见过从here以下代码可以获取各个 Pdx 字段

IPdxInstance pdx = (IPdxInstance)ev.NewValue;
pdx.GetField("Field1");

这适用于字段级别,但我想转换PdxInstanceImpl收到的PdxInstance所以它可以直接放入另一个区域,或者我想将所有字段转换回 Json (作为字符串),然后将 Json 字符串放入另一个区域,或者按照我的喜好使用它。

所以显然有一种方法可以自动序列化PdxInstance to MyClass但如果我尝试

MyClass c = (MyClass)pdx;

然后我得到System.InvalidCastException: Unable to cast object of type 'Apache.Geode.Client.Internal.PdxInstanceImpl' to type 'MyClass'

我从一些人身上看到Java 客户端示例你可以使用类型PdxInstanceImpl获取数据,但在 C# 本机客户端中出现错误:PdxInstanceImpl is inaccessible due to its protection level.

我已经添加了自动序列化器结果是一样的。

知道我在这里缺少什么吗?谢谢


最后我使用了逐个字段的方法:

IPdxInstance pdx = (IPdxInstance)ev.NewValue;
pdx.GetField("Field1");
pdx.GetField("Field2");
pdx.GetField("Field3");
etc...

在事件处理程序之外,为了创建 PDX 实例,我使用了:

IPdxInstanceFactory writer = Setup.g.GetCache().CreatePdxInstanceFactory("myType");
writer.WriteString("String", "s");
writer.WriteChar("Char", 'c');
writer.WriteDouble("Double", Convert.ToDouble(1000));
IPdxInstance pdx = writer.Create();

要读取 PDX 实例,其:

IPdxInstance pdx = Setup.gpg.GeodeGetPdx("myType", key);
MyType t = new MyType();
t.String1 = (string)pdx.GetField("String1");
t.Int1 = (int)pdx.GetField("Int1");
t.Date1 = (DateTime)pdx.GetField("Date1");
etc...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Geode本机客户端反序列化Pdx实例Impl 的相关文章

随机推荐

  • “?” 是什么意思?和“:”在布尔语句中做什么? [复制]

    这个问题在这里已经有答案了 我认为这个问题是一个通用的编程问题 但假设我要为 Java 请求这个 下面的语句有什么作用 return a b c b c 我看过语法 s and 在许多主题中都有 我在其中找到了这个特定的主题检查三个布尔值中
  • CSS 全页宽度水平菜单和水平子菜单

    我正在尝试为我正在开发的网站创建一个解决方案 其中菜单和子菜单水平居中 但 div 延伸到整个页面宽度 首先 这是一个 HTML 示例 div class full width div
  • Android 滑动更改片段不起作用

    我正在尝试制作一个应用程序 用户可以在其中滑动并更改他们在屏幕上看到的片段 我无法使用视图寻呼机 因为我希望用户能够永远滑动到不同的片段 这是我的片段中的探测器 class MyGestureDetector extends SimpleO
  • JavaFX TextField Array 文本值的最大长度

    我正在开发一个 JavaFX 项目 但在使用 TextField 控件时遇到问题 我想将用户在每个 TextField 中输入的字符限制为 1 个 如果您将单个文本字段与侦听器一起使用 我找到了一个解决方案 public static vo
  • onmouseout 时如何关闭组合框?

    鼠标移出时如何关闭组合框
  • NSURLProtocol registerClass 适用于 iOS 模拟器,但不适用于实际设备

    我正在打电话 NSURLProtocol registerClass 使用自定义协议 Chromium Cronet 播放视频时AVPlayer 注册完成于here 它在 iOS 模拟器 Xcode 11 3 上运行良好 但在实际设备 iP
  • 如何让 Zend Route 根据域名使用不同的模块

    我想设置多个域名来使用同一个框架 但我似乎无法让 zend 的路由器屈服于我的意愿 有很多使用子域的示例 但尝试使它们适用于整个域似乎并不像我期望的那样有效 这是我最接近的 但它似乎不起作用 resources router routes
  • htaccess 用于将非 www 重定向到 www,同时保留 http 和 https

    我的网站刚刚获得 EV SSL 证书 过去 我使用 htaccess 将非 www 请求重定向到 www 并且效果很好 但现在 如果我请求 https 页面 我最终会 通过 htaccess 重定向 得到 http 版本 我需要 htacc
  • 是否可以将 Cocoa Touch 手势识别器与图层/CALayer 对象一起使用?

    是否可以使用带有图层的手势识别器 假设我想向视图添加多个子图层并实现拖放以及点击单个元素 有可能吗 最好的模式是什么 您可以尝试将手势识别器添加到您的UIView然后打电话 CALayer hitTest CGPoint thePoint
  • Excel 2013 的 TextJoin UDF

    我正在尝试使用 TextJoin 的 UDF 版本 因为我使用的是 Excel 2013 但此函数无法正确返回准确的数据 我在 Excel 中的数据集如下所示 saleID Item 5 PRE2323 6 Pre2323223 6 OX1
  • 在 Jenkins 中获取负载参数

    我是詹金斯的新手 我跟着这个help实现 Jenkins Github 和 Webhook 但是 我陷入了这个问题 我想获取 Jenkins 中的有效负载参数 以检查有效负载 json 中的更改 操作等信息 我写了一些脚本来测试 ACTIO
  • 以编程方式合并两个音频片段

    我有两个不同音频剪辑的两个样本数组 如果我只是以编程方式将它们添加在一起 这是否相当于在音频编辑套件中将一个轨道叠加在另一个轨道上 就像如果我有一个贝斯的音频片段和另一个鼓的音频片段 我希望它们一起演奏 我可能会做这样的事情 for int
  • 类错误不存在默认构造函数

    一些简单的代码 class Thing public int num Thing int num this gt num num class Stuff public Thing thing an instance of thing is
  • 使用 Java 从文本中删除重复行

    我想知道是否有人在java中具有删除重复行同时保持行顺序的逻辑 我不喜欢正则表达式解决方案 public class UniqueLineReader extends BufferedReader Set
  • 如何在网格视图中显示文件夹中的图像?

    如何显示gridview中路径存储在ms sql数据库中的文件夹中的图像 这是一个非常常见的任务 微软有代码示例 看这里 http msdn microsoft com en us library aa479350 aspx
  • 定位非数字索引值的数字位置

    考虑系列s below s pd Series np arange 18 0 3 list ABCDEF s A 18 B 15 C 12 D 9 E 6 F 3 dtype int32 我想得到的数字位置 D 这样就可以了 但我想我们都同
  • (C语言)如何在使用getchar()时使用退格键;在这个函数中?

    你好 抱歉 如果我听不懂 我是 C 编程新手 而且我不是最好的英语作家 我的问题 我无法理解如何在使用代码时使用退格键 我很高兴有人能向我解释它是如何工作的 include
  • 如何让 Laravel Vite 将版本化的静态资源复制到构建文件夹

    我正在尝试 Laravel Vite 但似乎无法弄清楚如何让构建命令移动静态资源 相反 它通过 Base64 将图像 嵌入 CSS 文件中 到目前为止 我发现您需要引用相对于源 css scss 文件的图像 就像这样在 resources
  • 修改 jQuery ajax 请求连接标头

    我尝试使用以下代码修改连接标头 但没有成功 jQuery ajax url URL async boolVariable beforeSend function xhr xhr setRequestHeader Connection clo
  • Geode本机客户端反序列化Pdx实例Impl

    我有一个 REST 客户端 它使用 Json 数据填充 Geode 区域 Geode REST API 会自动将其转换为 PdxInstance 类型 该区域触发 C 本机客户端侦听器AfterCreate EntryEvent