尝试将一个字段作为对象存储在我的实体中。对象类型是不确定的,因为它可用于存储不同类型的对象。
调用它时,Web API会将其作为字典配对值接收。 一旦插入到MongoDb中,它将具有这些奇怪的_t和_v JsonObject字段。
有人可以阐明这个问题吗?
答案 0 :(得分:1)
嘿,我设法自己解决了。
ExpandoObject是您需要发送到Web API的对象。最终将转换为字典
答案 1 :(得分:1)
如果将属性设为动态ExpandoObject而不是“ object”,则它将正确反序列化,然后可以将其插入mongodb中。最新的Mongo c#驱动程序支持动态。
例如
public class NotificationDTO
{
public string Id { get; set; }
public ExpandoObject CustomData { get; set; }
}
在DTO中将强类型用作ExpandoObjects您可以编写一个简单的扩展名,以帮助您将强类型转换为动态,如下所示:
public static dynamic ToDynamic<T>(this T obj)
{
IDictionary<string, object> expando = new ExpandoObject();
foreach (var propertyInfo in typeof(T).GetProperties())
{
var currentValue = propertyInfo.GetValue(obj);
expando.Add(propertyInfo.Name, currentValue);
}
return expando as ExpandoObject;
}