C# 如何强制mongo仅序列化指定类型中的属性?(继承)
我有一个ref类,它有几个字段,这些字段是引用对象所必需的,而连接是另一个类上的属性 实际类继承自ref类,因为ref类中的所有字段当然都适用于实际类 我的问题是,如果将整个对象分配给ref class字段,mongo将序列化整个对象 即 及 如果我有另一个引用Contacts的类,该类具有ContactRef类型的属性,并且我分配了一个有效的完整contact,mongodb将序列化contact中的所有属性,而不仅仅是ContactRef中的字段 您会注意到ContactRef继承自实体。当它序列化ContactRef时,它也应该从实体获取所有属性,但忽略任何来自Contact的属性 如何做到这一点?我认为这是一个常见的问题。出于明显的原因,我不希望所有这些引用都包含所有字段 如果我用Newtonsoft.Json做这件事,我可以创建一个解析器并注册它,它也可以做类似的事情,但我不确定如何用mongo实现这一点 谢谢C# 如何强制mongo仅序列化指定类型中的属性?(继承),c#,mongodb,C#,Mongodb,我有一个ref类,它有几个字段,这些字段是引用对象所必需的,而连接是另一个类上的属性 实际类继承自ref类,因为ref类中的所有字段当然都适用于实际类 我的问题是,如果将整个对象分配给ref class字段,mongo将序列化整个对象 即 及 如果我有另一个引用Contacts的类,该类具有ContactRef类型的属性,并且我分配了一个有效的完整contact,mongodb将序列化contact中的所有属性,而不仅仅是ContactRef中的字段 您会注意到ContactRef继承自实体。当
public class ContactRef : Entity
{
public const string COLLECTION_NAME = "Contacts";
public string? FirstName { get; set; }
public string? MiddleName { get; set; }
public string LastOrCompanyName { get; set; } = string.Empty;
public ContactTypes ContactType { get; set; }
public string Name => this.ContactType == ContactTypes.Individual ? $"{this.FirstName} {this.LastOrCompanyName}" : this.LastOrCompanyName;
}
public class Contact : ContactRef
{
public Contact() : base() { }
private string? _userName = string.Empty;
public string? UserName
{
get => this._userName; set
{
this._userName = value;
this.NormalizedUserName = value?.ToUpper();
}
}
public string? NormalizedUserName { get; set; }
public string? PasswordHash { get; set; }
....
}