DataItem
sınıfından oluşan bir koleksiyonum var.Koleksiyona bir dairesel bağımlılık bulun C#
Dataıtem:Property
RefItem
depolar aynı toplama olabilecek DataItem
için ref.
public class DataItem
{
public int ID { get; set; }
public string Name { get; set; }
public DataItem RefItem { get; set; }
}
Koleksiyonu:
private List<DataItem> dataitems;
public List<DataItem> DataItems
{
get { return dataitems; }
set { dataitems = value; }
}
Şimdi koleksiyonunda verileri koleksiyonunda veri eklemek ve doğrulamak için iki yöntem vardır.
public void AddItem(DataItem item)
{
DataItems.Add(item);
}
public bool ValidateDataItems()
{
//Logic for circular reference
//
return true;
}
benim collection.For eski herhangi döngüsel bağımlılık olup olmadığını kontrol etmek için validate yönteminde bir algoritma istiyorum. Aşağıda benim için geçersiz bir veri var. Item3 tekrar item1 ile işaret edilir. item1 veya bir sınıfın bir ref öğesi tekrar gösterdiği yere başka olası kombinasyon ürün Item1-> Öğe2, item2-> item3, item3- gibi koleksiyona eklenirse
var item1 = new DataItem() {ID=1,Name="First Item",RefItem =null};
var item2 = new DataItem() { ID = 1, Name = "First Item", RefItem = item1 };
var item3 = new DataItem() { ID = 1, Name = "First Item", RefItem = item2 };
item1.RefItem = item3;
AddItem(item1);
AddItem(item2);
AddItem(item3);
>. Yanlışlık döndürmek için doğrulama yöntemi istiyorum.
Bu bir dairesel bağımlılık sorunudur, ancak C# için bunu yapmak için herhangi bir somut algoritma bulamadım.
Eğer mevcut referanslar takip, tüm başvuruları çapraz olamaz mı? Eğer zaten karşılaştığınız yeni bir referans ise, daireseldir. –