我有2個組件:MEF(託管擴展框架)做「鴨」打字嗎?
大會1:
interface IWeapon {
int Might { get; }
}
[Export("sword")]
public class Sword : IWeapon {
public int Might {
get { return 10; }
}
}
大會2:
interface IWeapon {
int Might { get; }
}
var catalog = new AssemblyCatalog(typeof(Ninja.Sword).Assembly);
var container = new CompositionContainer(catalog);
// not allowed to use the IWeapon def in assembly 2
var sword = container.GetExportedValue<IWeapon>("sword");
我知道如何得到這個工作。我可以向MEF(託管擴展框架)請求該對象,或者讓它導出正確的IWeapon,而不僅僅是按名稱導出對象。
如果所有接口點都實現了,MEF可以爲我執行「鴨」打字並返回一個代理對象嗎?
我看到的是版本的問題,如果你的底座組件的變化版本,所有的擴展可能需要重新編譯。 – 2009-07-17 00:39:02
我想通過將接口移動到單獨的程序集來解決該問題。該組件的版本只有在實際合同更改時纔會更改。 – 2009-07-17 00:40:31