MongoDB C#驱动程序通用类型
我正在尝试向mongodb添加通用对象 我怎么能让这样的东西起作用 如果我必须实现自己的序列化程序,请您给我一些提示,我从哪里开始MongoDB C#驱动程序通用类型,c#,mongodb,generics,C#,Mongodb,Generics,我正在尝试向mongodb添加通用对象 我怎么能让这样的东西起作用 如果我必须实现自己的序列化程序,请您给我一些提示,我从哪里开始 public class ParameterBase{} [BsonDiscriminator(RootClass = true, Required = true)] [BsonKnownTypes(typeof(NumericParameter))] public class Parameter<T> : ParameterBase { [B
public class ParameterBase{}
[BsonDiscriminator(RootClass = true, Required = true)]
[BsonKnownTypes(typeof(NumericParameter))]
public class Parameter<T> : ParameterBase
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public ObjectId Id { get; set; }
public string Name{get;set;}
public virtual Type Type { get{return typeof(T); } }
public virtual T Value
{
get { return _value; }
set
{
if (EqualityComparer<T>.Default.Equals(_value, value) == false)
{
_value = value;
}
}
}
protected T _value;
}
public class NumericParameter : Parameter<double>
{
private double _value;
public double Value{get{return _value;}set{_value = value;}}
}
public class StringParameter : Parameter<string>
{
private string _value;
public string Value{get{return _value;}set{_value = value;}}
}
如果我将类StringParameter添加到类的BsonKnownTypes中
参数
这样地
[BsonKnownTypes(typeof(NumericParameter)、typeof(StringParameter))]
我得到这个错误
System.ArgumentNullException:'Class Ha.MongoDb.Playway.StringParameter无法分配给Class Ha.MongoDb.Playway.Parameter'1[[System.Double,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]]。确保已知类型是从映射类派生的。
参数名称:类型'
您能解释一下当前代码的问题是什么吗?这始终是一个很好的起点…很抱歉,我添加了更多信息,希望您能提供帮助。您需要鉴别器和已知类型吗?
var context = new DatabaseContext("test");
var collection = context.db.GetCollection<ParameterBase>("RecipeParameterSet");
var nParameter = new NumericParameter()
{
Name = "Offset",
Value = 1.8
};
collection.InsertOne(nParameter);
Console.ReadLine();