我想使用 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。 对于包含对象的属性类型的所有属性,将它们设置为父对象。换句话说,所有触发递归保护的类型的属性都应该设置为创建层次结构中的最后一个对象。