Tôi không nói về các lớp chung chung khai báo các thuộc tính hoặc các trường với kiểu tham số chung. Tôi đang nói về các thuộc tính chung chung có thể được áp dụng cho cả hai lớp chung chung và không chung chung.Bạn có nghĩ các thuộc tính chung sẽ hữu ích trong .NET không?
Tôi không nói về vấn đề này:
public class Base<T>
{
public T BaseProperty { get; set; }
}
Tôi đang nói về điều này:
public class Base
{
public T BaseProperty<T>
{
get
{
// Insert magic
}
set
{
// Insert magic
}
}
}
Hoặc này:
public class Base<U>
{
public T BaseProperty<T>
{
get
{
// Insert magic
}
set
{
// Insert magic
}
}
public U OtherBaseProperty { get; set; }
}
Việc sử dụng sẽ đi một cái gì đó như thế này :
var b = new Base();
b.BaseProperty<int> = 42;
int i = b.BaseProperty<int>;
b.BaseProperty<string> = "Hi";
string s = b.BaseProperty<string>;
Hoặc cho ví dụ thứ hai:
var b = new Base<string>();
b.BaseProperty<int> = 42;
int i = b.BaseProperty<int>;
b.OtherBaseProperty = "Hi";
string s = b.OtherBaseProperty;
Các // Chèn ma thuật dùng để xử lý mỗi cuộc gọi đến các getter tài sản chung hoặc setter mà có một kiểu khác nhau cho các tham số kiểu.
Ví dụ này:
b.BaseProperty<int> = 42;
nhu cầu được xử lý khác nhau để:
b.BaseProperty<string> = "Hi";
tôi sẽ dự tính rằng đối với từng loại T nếu getter được gọi trước khi setter được gọi sau đó mặc định (T) được trả về. Khi setter được gọi là giá trị được lưu trữ trên mỗi loại T sao cho khi getter được gọi là giá trị trước đó đã được thiết lập cho kiểu đó được trả về.
Lưu ý rằng trong các thuộc tính trình bao chỉ là các phương thức.
Bạn có nghĩ điều này hữu ích không?
Không, dường như tất cả đều không hữu ích. Nếu tôi cần một tài sản int, tôi sẽ làm một cái. Nếu tôi cần một tài sản chuỗi, tôi sẽ làm một cái. Khá đơn giản. –