我有一个REST客户端,它用Json数据填充Geode区域,Geode RESTAPI自动将其转换为PdxInstance类型。
该区域触发C#本机客户端侦听器AfterCreate(EntryEvent
PDX[7534066,__GEMFIRE_JSON]{@type=MyClass, Field1=Value1,Field2=Value2}
我从这里看到以下代码可以获取单个Pdx字段
IPdxInstance pdx = (IPdxInstance)ev.NewValue;
pdx.GetField("Field1");
这在字段级别上有效,但是我想将接收到的
PdxInstanceImpl
转换为PdxInstance
,这样它就可以直接放入另一个区域,或者我想将所有字段转换回Json(作为字符串),然后将Json字符串放入另一个区域,或者根据需要使用它。
因此,显然有一种方法可以将
PdxInstance
自动序列化为MyClass
,但如果我尝试
MyClass c=(MyClass)pdx;
然后我得到
System. InvalidCastException:无法将类型为“Apache.Geode.Client.International.PdxInstanceImpl”的对象转换为类型为“MyClass”
我从一些Java客户端示例中看到,您可以使用type
PdxInstanceImpl
获取数据,但在C#本机客户端中会出现错误:由于其保护级别,PdxInstanceImpl无法访问。
我添加了autoserializer,结果是相同的。
知道我错过了什么吗?谢谢
共1个答案
匿名用户
最后,我使用了逐场方法:
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...
相关问题
- 在Angular Service的OnDestroy钩子中取消订阅HTTP客户端调用
- 返回415不支持的媒体类型REST客户端的响应状态
- 如何更改泽西客户端中的CookieSpec?
- ApacheHTTP客户端每个请求4.3个凭据
- 如何验证PoolingHttpClientConnectionManager是否应用于泽西客户端
- 使用启用缓存的Apache HttpClient作为泽西2客户端
- 我们可以将jersey客户端用于Apache CXF网络服务吗?
- 泽西-客户端安全和Apache HttpClient
- 使用apache httpclient作为PoolingHttpClientConnectionManager上泽西客户端的后端
- 如何从客户端设置路由类型ActiveMQ Artemis
- 通过远程客户端使用JBoss 7 Database aseServerLoginModule
- 从字节数组反序列化后,xml文档签名无效
- JavaLostFocus和InputVerifier,以反向制表符顺序移动
- Spring会话gemfire客户端-线程竞争-黑名单
- 启用Geode REST以同时使用HTTP和HTTPS
- Java序列化是否可以与Gemfire/Geode一起使用,而无需在服务器上部署类?
- Geode原生客户端-部署
- Geode原生客户端复合密钥
- Apache Geode Native Client日志在启动本机客户端时显示连接池错误
- 未在Apache Geode本机客户端中执行的UnsterKeys()方法