Tôi có một lớp bộ sưu tập như thế này:C# ngầm chuyển đổi từ lớp cơ sở
public class SomeDataCollection : List<ISomeData>
{
// some method ...
}
nhưng tôi không thể làm điều này:
SomeDataCollection someDatas = new List<ISomeData>();
Không thể ngầm chuyển đổi loại
List<ISomeData>
-SomeDataCollection
. Một chuyển đổi rõ ràng tồn tại (là bạn thiếu một dàn diễn viên?)
vì vậy tôi cố gắng tạo ra một coverter tiềm ẩn bên trong lớp SomeDataCollection
bộ sưu tập:
public static implicit operator SomeDataCollection(List<ISomeData> l)
{
var someDatas = new SomeDataCollection();
someDatas.AddRange(l);
return someDatas;
}
nhưng nó nói rằng tôi không thể tạo chuyển đổi như vậy:
SomeDataCollection.implicit operator SomeDataCollection(List<ISomeData>)
: chuyển đổi người dùng định nghĩa hoặc từ một lớp cơ sở không được phép
Và khi tôi đúc nó như thế này:
SomeDataCollection someDatas = (SomeDataCollection)new List<ISomeData>();
nó ném một lỗi mà nói:
System.InvalidCastException: Không thể cast đối tượng kiểu
List<ISomeData>
gõSomeDataCollection
.
Làm thế nào tôi có thể làm điều này:
SomeDataCollection someDatas = new List<ISomeData>();
mà không nhận được một lỗi? Hãy giúp tôi. Cảm ơn trước.
có thể dupplicate: http://stackoverflow.com/questions/3401084/user-defined-conversion-operator-from-base-class – albertjan