Tôi đang thử Khung quản lý mở rộng lần đầu tiên trong Visual Studio 2010 beta 2 bằng cách sử dụng System.ComponentModel.Composition từ .net-4.0.Hướng dẫn MEF sử dụng bất kỳ hội đồng nào có sẵn
Tôi đã không thể tải tệp CompositionContainer để tìm các hội đồng triển khai của tôi bằng cách sử dụng hai quy trình thay thế bên dưới.
nỗ lực đầu tiên (điều này đã làm việc trong một thông cáo CodePlex cũ của MEF):
var composition = new CompositionBatch();
composition.AddPart(this);
var container = new CompositionContainer(new DirectoryCatalog(AppDomain.CurrentDomain.BaseDirectory));
container.Compose(composition);
nỗ lực thứ hai (điều này làm việc trong phiên bản beta 1, tôi nghĩ):
var aggregateCatalog = new AggregateCatalog(
new AssemblyCatalog(Assembly.GetExecutingAssembly()),
new DirectoryCatalog(AppDomain.CurrentDomain.BaseDirectory));
var compositionContainer = new CompositionContainer(aggregateCatalog);
compositionContainer.ComposeParts(this);
Có một phương pháp mới để làm điều này trong bản beta 2?
CHỈNH SỬA: Hóa ra không có gì liên quan đến bố cục. Tôi đã có một thuộc tính tĩnh đại diện thực hiện nhập khẩu của tôi:
[Import] public static ILog Log { get; set; }
mà cần phải có được:
[Import] public ILog Log { get; set; }
tôi đánh dấu câu trả lời của Daniel là chấp nhận vì những lời khuyên hiền triết của gỡ lỗi một cách kỹ lưỡng hơn giải quyết vấn đề.
Tôi đã sử dụng bản Beta 2 trong vài tuần và đã sử dụng ví dụ thứ 2 của bạn mà không gặp bất kỳ vấn đề nào. Bạn có bất kỳ bộ phận nội bộ trong lắp ráp thực hiện của bạn hoặc họ chỉ nằm trong BaseDirectory? Bạn đã có thể xác nhận những gì AppDomain.CurrentDomain.BaseDirectory bản đồ để tại thời gian chạy? Ngoài ra, lớp học có chứa các đoạn mã trên có chứa bất kỳ Nhập khẩu được khai báo nào không? Chỉ cần chắc chắn vì không có gì sẽ được chọn nếu trường hợp của lớp (điều này) không có bất kỳ nhập khẩu – JamesEggers
Tôi phải làm một cái gì đó daft. Việc triển khai rất đơn giản trong khi tôi cố gắng làm cho nó hoạt động. BaseDirectory là hợp lệ, lớp này có nhập khẩu. Tuy nhiên, một chút headscratching và tôi sẽ nhận được ở đó cuối cùng. – grenade
Bất cứ ai có thể giải thích lý do tại sao không thể sử dụng [Nhập] cho thuộc tính tĩnh? – Dave