Tôi có một lớp tĩnh trong giải pháp được sử dụng để làm việc với các assembly khác nhau. Tôi muốn liên kết chúng thông qua MEF, vì vậy tôi đã thực hiện một lĩnh vực trong một lớp học.Sử dụng C# MEF với các lớp tĩnh
[Import(typeof(A))]
static private A _a1;
Sau đó, tôi có một phương pháp mà tôi vượt qua lắp ráp tên như một cuộc tranh cãi:
public static A LoadPackage(string filePath)
{
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(filePath));
var _container = new CompositionContainer(catalog);
???
}
Vậy là có một cách bây giờ phải nhập khẩu loại từ lắp ráp theo quy định của filepath?
tôi không thể làm:
_container.ComposeParts(this);
từ lớp là 'tĩnh và không phải tôi có thể làm điều này
_container.ComposeParts(_a1);
(mà có thể là hoàn toàn sai lầm khi bắt đầu với) kể từ A
không có bất kỳ nhà thầu nào (do đó _a1
là không)
Có lý do nào cần phải tĩnh không? Bất cứ điều gì bạn nhập/xuất sẽ là một Singelton theo mặc định, tốt hơn là có một lớp tĩnh trong hầu hết các trường hợp. – eandersson
đây là một trong những tùy chọn tôi đang xem xét. Lý do để giữ nó tĩnh là tôi không muốn thay đổi mã trên tất cả dự án của tôi (ví dụ - Tôi lười biếng +)) – noaRAVE
Tôi khá chắc chắn rằng bạn không thể sử dụng các lớp tĩnh trực tiếp với MEF, nhưng tôi không Không biết điều đó. – eandersson