Я следующую структуру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
отображения:
«System .ArgumentOutOfRangeException: Аргумент memberInfo должен быть для класса FixtureNode, но для класса FixtureNodeBase. "
LINQPad файл с примером можно скачать здесь example.linq
Если у вас есть какие-либо идеи, как решить эту проблему, пожалуйста, поделитесь вашей идеи.