我想使用 autofixture 创建一个对象图,其中子对象具有对父对象的引用。例如 :
class A
{
public List<B> Children { get; set; }
}
class B
{
public A Parent { get; set; }
}
我试图做出一个处理递归的行为,但我不知道如何将父对象作为属性的内容发出。
public class AutoParentOnRecursionBehavior : ISpecimenBuilderTransformation
{
public ISpecimenBuilder Transform(ISpecimenBuilder builder)
{
if (builder == null)
throw new ArgumentNullException("builder");
return new RecursionGuard(builder, new AutoParentOnRecursionHandler());
}
}
public class AutoParentOnRecursionHandler : IRecursionHandler
{
public object HandleRecursiveRequest(
object request,
IEnumerable<object> recordedRequests)
{
object handleRecursiveRequest = recordedRequests.First(x => x.Equals(request));
return ....
}
}
谢谢。
编辑:我正在考虑一种通用的方式,而不必指定类型 A 和 B 甚至属性 Children。对于包含该对象的属性类型的所有属性,将它们设置为父对象。换句话说,触发递归保护的类型的所有属性都将它们设置为创建层次结构中的最后一个对象。