Đối với một số lý do tôi đang chiến đấu để thực hiện một tài sản từ một giao diện chung bằng cách sử dụng một lớp cơ sở chung như sau:lớp cơ sở chung kế thừa từ giao diện Generic
public interface IParent<TChild> where TChild : IChild
{
TChild Child { get; }
}
public interface IChild { }
Sau đó, tôi có một lớp cơ sở:
public class ParentBase<TChild> : IParent<TChild> where TChild : IChild
{
private TChild _child;
public ParentBase(TChild child)
{
this._child = child;
}
#region IParent<TChild> Members
public TChild Child
{
get { return _child; }
}
#endregion
}
Bây giờ tôi có một Chánh mới phái sinh và trẻ em đối tượng như sau:
public class MyChild : IChild { }
public class MyParent : ParentBase<MyChild>, IParent<IChild>
{
public MyParent(MyChild child)
: base(child)
{
}
}
tôi wan t để nhanh chóng nó và nhận được trừu tượng (kiểu giao diện) để vượt qua cho người tiêu dùng như sau:
IParent<IChild> parent = new MyParent(new MyChild());
Nhưng đối với một số lý do tôi không thể thực hiện TChild một cách chính xác, mặc dù tôi đã xác định tài sản public TChild Child
trên ParentBase, các trình biên dịch nói rằng nó không được thực hiện, ngay cả khi tôi thử thực hiện một cách rõ ràng. Như bạn có thể thấy các ràng buộc là tất cả các cách thức thông qua các lớp cơ sở.
Bạn đang sử dụng phiên bản C# nào? – Oded
Tôi đang sử dụng C# 4 (.NET 4) – Andre