0
我有以下数据结构MongoDB的类映射
internal class FixtureNodeBase
{
public FixtureNodeBase(string name, IEnumerable<FixtureNodeBase> children)
{
Name = name;
Children = children.ToList().AsReadOnly();
}
public string Name { get; }
public IReadOnlyList<FixtureNodeBase> Children { get; }
}
internal class FixtureNode : FixtureNodeBase
{
public FixtureNode(
string name,
string assembly,
string runnableName,
IEnumerable<FixtureNodeBase> children)
: base(name, children)
{
Assembly = assembly;
RunnableName = runnableName;
}
public string Assembly { get; }
public string RunnableName { get; }
}
internal class FixtureTree
{
public FixtureTree(FixtureNodeBase root)
{
Root = root;
}
public FixtureNodeBase Root { get; }
}
internal class Build
{
public Build(FixtureTree fixtures)
{
Fixtures = fixtures;
}
public FixtureTree Fixtures { get; }
}
为我用以下的数据结构映射
BsonClassMap.RegisterClassMap<Build>(
cm =>
{
cm.MapMember(x => x.Fixtures);
cm.MapCreator(x => new Build(x.Fixtures));
});
BsonClassMap.RegisterClassMap<FixtureTree>(
cm =>
{
cm.MapMember(x => x.Root);
cm.MapCreator(x => new FixtureTree(x.Root));
});
BsonClassMap.RegisterClassMap<FixtureNodeBase>(
cm =>
{
cm.MapMember(x => x.Name);
cm.MapMember(x => x.Children);
cm.MapCreator(x => new FixtureNodeBase(x.Name, x.Children));
});
BsonClassMap.RegisterClassMap<FixtureNode>(
cm =>
{
cm.MapMember(x => x.Name);
cm.MapMember(x => x.Assembly);
cm.MapMember(x => x.RunnableName);
cm.MapMember(x => x.Children);
cm.MapCreator(x => new FixtureNode(x.Name, x.Assembly, x.RunnableName, x.Children));
});
,并抛出例外FixtureNode
映射:
“系统.ArgumentOutOfRangeException:memberInfo参数必须用于类FixtureNode,但用于类FixtureNodeBase。“与例如
LINQPad文件可以从这里example.linq
下载如果您有任何想法,如何解决该问题,请分享你的想法。