[英]MongoDB .NET: Mapping inherited generic property
我有一個具有通用屬性Value
的通用類Parameter
:
abstract class Parameter<T> {
public T Value { get; set; }
}
StringParameter
類繼承了Parameter
類:
class StringParameter : Parameter<string> {
//...
}
是否可以正確地映射StringParameter
類,使其包含通用Value
屬性?
當嘗試使用下面的代碼(和其他各種方法)映射StringParameter
類時,我能做的最好的事情是得到一條消息異常:“ memberInfo參數必須用於StringParameter類,但適用於Parameter`1類。”
BsonClassMap.RegisterClassMap<StringParameter>(cm => {
cm.AutoMap();
cm.MapMember(typeof(StringParameter).GetRuntimeProperty("Value"));
});
為每個繼承該子類的子類使用指定的類型參數映射Parameter
類,然后自動映射每個子類似乎已成功。
BsonClassMap.RegisterClassMap<Parameter<string>>(cm => {
cm.AutoMap();
cm.MapProperty("Value");
});
BsonClassMap.RegisterClassMap<Parameter<DateTime>>(cm => {
cm.AutoMap();
cm.MapProperty("Value");
});
BsonClassMap.RegisterClassMap<Parameter<int>>(cm => {
cm.AutoMap();
cm.MapProperty("Value");
});
BsonClassMap.RegisterClassMap<Parameter<decimal>>(cm => {
cm.AutoMap();
cm.MapProperty("Value");
});
BsonClassMap.RegisterClassMap<StringParameter>();
BsonClassMap.RegisterClassMap<DateParameter>();
BsonClassMap.RegisterClassMap<IntegerParameter>();
BsonClassMap.RegisterClassMap<DecimalParameter>();
請注意,這會將所有Parameter
類映射到具有適當區分符的單個集合中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.