我有一个 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
.
我已经添加了自动序列化器结果是一样的。
知道我在这里缺少什么吗?谢谢