?
: , , , .
:
1.. , . , ParentTag Tag. , int ( Id), , ParentTagId... Tag.
2. . , Desc . ( , . - , .)
, , . , , .
, , . - ; T, T , , "", ; .
3. . :
Ploeh.AutoFixture.ObjectCreationException [...], .
Tag , . , .
, C P , P C. , ParentTag, C, P, C, , .
AutoFixture, , .
(DAG) — "" - . Tag ; , .
:
1. ParentTag:
public Tag ParentTag
{
…
set
{
if (!IsOrIsAncestorOf(value))
{
parentTag = value;
}
else
{
throw new ArgumentException("ParentTag", "would cause a cycle");
}
}
}
private Tag parentTag;
private bool IsOrIsAncestorOf(Tag other)
{
return this == other || IsOrIsAncestorOf(other.Parent));
}
2. ParentTag readonly, . - — , :
public Tag(Tag parentTag)
{
this.parentTag = parentTag;
}
private readonly Tag parentTag;
public Tag ParentTag
{
get
{
return parentTag;
}
}
.