Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将常规记录强制转换为对象_C#_Apache Kafka_Avro_Confluent Platform - Fatal编程技术网

C# 无法将常规记录强制转换为对象

C# 无法将常规记录强制转换为对象,c#,apache-kafka,avro,confluent-platform,C#,Apache Kafka,Avro,Confluent Platform,嗨,我有下面c#的模型。这些是Avro文件 publicProductMessageEvents获取值(TestPayload参数) { 返回新的ProductMessageEvents() { Metadata=新的KafkapProductEvent.Metadata { Timestamp=“测试”, 环境=“测试” }, Product=新的kafkapproductevent.Product { AgeGrading=“测试”, KeycodeType=“type1”, FamilyT

嗨,我有下面c#的模型。这些是Avro文件

publicProductMessageEvents获取值(TestPayload参数)
{
返回新的ProductMessageEvents()
{
Metadata=新的KafkapProductEvent.Metadata
{
Timestamp=“测试”,
环境=“测试”
},
Product=新的kafkapproductevent.Product
{
AgeGrading=“测试”,
KeycodeType=“type1”,
FamilyTree=新的KafkapProductEvent.FamilyTree
{
Class=新的KafkapProductEvent.CodeNamePair
{
Code=“测试代码”,
Name=“测试名称”
}
},
DssProduct=新的KafkapProductEvent.DssProduct
{
DocumentStatus=“活动”
}
选项=新选项[]
{
新选项
{
PrimaryColor=新的代码名对
{
Name=“White”,
},
SecondaryColor=新的代码名对
{
Name=“red”,
}
},
新选项
{
PrimaryColor=新的代码名对
{
Name=“White”,
}
},
},
Version=“最新版本”
};
}
}
如果我尝试访问下面的值,它会工作

 object ageGrading = ((GenericRecord)response.Message.Value["Product"])["AgeGrading"];
如果我尝试访问下面的值,那么它会抛出

object familyTree = ((GenericRecord)response.Message.Value["Product"])["FamilyTree"]["Class"]["Code"];
它抛出错误
无法将带[]的索引应用于object类型的表达式


有人能帮我识别这个错误吗?任何帮助都将不胜感激。谢谢。

您正在将此对象强制转换为GenericRecord
((GenericRecord)response.Message.Value[“Product”])
,但它将此
((GenericRecord)response.Message.Value[“Product”])[“FamilyTree”]
作为对象返回。您需要将每个级别强制转换为GenericRecord以获得其属性

((GenericRecord)((GenericRecord)((GenericRecord)response.Message.Value["Product"])["FamilyTree"])["Class"])["Code"]

你好它不起作用。Thanksnobody是否读取过异常消息:(“无法将[]索引应用于object类型的表达式”表示您正在尝试使用[]应用索引对于object类型的表达式,我可以知道我在每个级别上如何做吗?嗨,如果我有一些可枚举的数据,那么我们如何获得数据?我在上面添加了一些代码。将其转换为
IEnumerable
。我已经厌倦了转换。我附加了屏幕截图。但是我如何获得非公共成员?在非公共成员中,有保存我的val的内容我真的很喜欢这个人回答这个问题。如果你一定要这么做,你需要使用反射,这是另一种方式。