Tôi có hai đối tượng MetaItems và Items.C# generics và bộ sưu tập
MetaItem là mẫu cho các đối tượng và Các mục chứa giá trị thực. Ví dụ: "Department" được coi là meta-item và "Sales", "UK Region", "Asia Region" được coi là mục.
Ngoài ra, tôi muốn duy trì mối quan hệ cha-con đối với các mục meta và mục này. đang
Tôi đã sau cho cùng -
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WpfApplication12
{
public interface IEntity
{
int Id { get; set; }
string Name { get; set; }
}
public interface IHierachy<T>
{
IHierachy<T> Parent { get; }
List<IHierachy<T>> ChildItems { get; }
List<IHierachy<T>> LinkedItems { get; }
}
public class Entity : IHierachy<IEntity>, IEntity
{
#region IObject Members
private int _id;
public int Id
{
get
{
return _id;
}
set
{
_id = value;
}
}
private string _name;
public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
#endregion
#region IHierachy<IEntity> Members
public IHierachy<IEntity> _parent;
public IHierachy<IEntity> Parent
{
get
{
return _parent;
}
}
private List<IHierachy<IEntity>> _childItems;
public List<IHierachy<IEntity>> ChildItems
{
get
{
if (_childItems == null)
{
_childItems = new List<IHierachy<IEntity>>();
}
return _childItems;
}
}
private List<IHierachy<IEntity>> _linkedItems;
public List<IHierachy<IEntity>> LinkedItems
{
get
{
if (_linkedItems == null)
{
_linkedItems = new List<IHierachy<IEntity>>();
}
return _linkedItems;
}
}
#endregion
}
public class Item : Entity
{
}
public class MetaItem : Entity
{
}
}
Tiếp theo là lớp thử nghiệm của tôi -
public class Test
{
public void Test1()
{
MetaItem meta1 = new MetaItem() { Id = 1, Name = "MetaItem1"};
MetaItem meta2 = new MetaItem() { Id = 1, Name = "MetaItem 1.1"};
Item meta3 = new Item() { Id = 101, Name = "Item 1" };
**meta1.ChildItems.Add(meta3);** // this line should not compile.
meta1.ChildItems.Add(meta2) // This is valid and gets compiled.
}
}
Trong lớp thử nghiệm, khi tôi buidling mối quan hệ cha-con, tôi có thể thêm mục như một đối tượng con cho đối tượng meta-item. Ở đây tôi muốn tạo ra lỗi biên dịch.
Ai đó có thể giúp tôi đạt được điều này.
-Regards Raj
Nếu một mục meta chỉ là một mục có chứa các mục khác, thì không phải nó thực sự chỉ là một khoản mục dù sao, ở đâu 'T = mục'? –
Không liên quan đến câu hỏi của bạn, nhưng đối với Entity.Id và Tên, các thuộc tính được tự động triển khai là bạn của bạn. – dahlbyk