Tôi có một số lớp học mà không triển khai một giao diện nhất định nhưng cấu trúc tuân thủ giao diện đó.Tự động tạo trình bao bọc để triển khai giao diện
interface IFoo {
void method();
}
class Bar { // does not implement IFoo
public void method() {...}
}
Bây giờ, tôi có thể viết một wrapper xung quanh những lớp học mà chỉ đơn giản uỷ thác cho lớp bọc
class BarWrapper : IFoo {
Bar bar = new Bar();
public void method()
{
bar.method();
}
}
Nhưng đó là rất nhiều công việc tẻ nhạt. Những lớp bao bọc đó có thể được tạo tự động không? Một cái gì đó như:
IFoo foo = CreateWrapper<IFoo>(new Bar());
tôi chắc chắn rằng bạn có thể làm điều này với Reflection.Emit nhưng tôi chưa từng sử dụng đó và nó không giống rất dễ dàng ở cái nhìn đầu tiên.
Có cách nào dễ dàng hơn hoặc có thể là thư viện đã triển khai tính năng này?
Nếu bạn kết thúc phải viết chính bạn, điều này có thể giúp ích như một ví dụ liên quan: http://stackoverflow.com/questions/847809/how-can-i-write-a-generic-container-class-that-implements-a-given-interface-in -c/847975 # 847975 –