我不是太熟悉,實施lambda表達式和表情,但我已經習慣了這種語法MVC多次在拉姆達識別對象上的屬性:如何使用lambda指定構造函數參數?
Html.Label(model => model.Foo)
在我的應用我使用Ninject有條件的綁定來提供Settings
類的實例,當我請求一個Class
的實例時,這個實例被注入。我Class
看起來是這樣的:
public class Class
{
private readonly Settings settings;
public Settings Settings { get { return settings; } }
public Class(Settings settings)
{
this.settings = settings;
}
}
我有一些代碼,看起來像這樣得到的Class
一個實例。我知道這是service locator anti pattern,但我們在這種情況下,沒有選擇,因爲其他方面的限制:
var settings = new Settings();
var instance = Ioc.Instance.Get<Class>("settings", settings);
我想重構它看起來像這一點,以便它是強類型,使用Lambda指定我提供的構造函數的參數:
var settings = new Settings();
var instance = Ioc.Instance.Get<Class>(x => x.settings, settings);
所以,這是可能的,代碼是什麼樣子?
這是否構造函數?在我的測試中,我只能看到課堂上的屬性? – 2014-10-10 09:36:42