C# 验证循环组织单元
我有一个对象组织单元,我在同一个对象中有一个对它的自引用C# 验证循环组织单元,c#,validation,methods,C#,Validation,Methods,我有一个对象组织单元,我在同一个对象中有一个对它的自引用 public class OrganizationUnit: IOrganizationUnit { private string fName; public string Name { get { return fName; } set { SetPropertyValue("Name", ref fName, (string) value); }
public class OrganizationUnit: IOrganizationUnit {
private string fName;
public string Name {
get { return fName; }
set { SetPropertyValue("Name", ref fName, (string) value); }
}
private OrganizationUnit fManagedBy;
public IOrganizationUnit ManagedBy {
get { return fManagedBy; }
set {
SetPropertyValue("ManagedBy", ref fManagedBy, (OrganizationUnit)value);
}
}
}
我需要一个方法,如果它发现第三级中的子组织单元正在引用父组织单元,或者说循环父组织,则该方法将引发异常
- A是主B由A管理C不能由A管理
void CheckCycles(IOrganizationUnit unit)
{
var visited = new HashSet<IOrganizationUnit>();
for (var current = unit; current != null; current = current.ManagedBy)
{
if (!visited.Add(current))
{
throw new Exception(); // cycle detected
}
}
}
无效检查周期(IOR组织单位)
{
var=newhashset();
for(var current=unit;current!=null;current=current.ManagedBy)
{
如果(!已访问。添加(当前))
{
抛出新异常();//检测到循环
}
}
}
浏览图表并保存已访问节点的历史记录。如果再次访问节点,则检测到一个循环:
void CheckCycles(IOrganizationUnit unit)
{
var visited = new HashSet<IOrganizationUnit>();
for (var current = unit; current != null; current = current.ManagedBy)
{
if (!visited.Add(current))
{
throw new Exception(); // cycle detected
}
}
}
无效检查周期(IOR组织单位)
{
var=newhashset();
for(var current=unit;current!=null;current=current.ManagedBy)
{
如果(!已访问。添加(当前))
{
抛出新异常();//检测到循环
}
}
}