2015-10-07 58 views
0

什麼是最常見的使用結實的nugetpackage /庫/框架的C++,幾乎相同的微軟稱爲Unity的C#庫:http://unity.codeplex.com/IoC和Factory for C++ - 替代Microsoft Unity for c#

最後的結果看起來像這樣

class IProjectRepository 
{ 
public: 
    vector<Project> GetProjects() = 0; 
} 

class XMLProjectRepository : IProjectRepository 
{ 
public: 
    vector<Project> GetProjects() 
    { 
     return // implementation 
    } 
} 

class Application 
{ 
public: 
    Application(shared_ptr<IProjectRepository> projectRepository) 
    // Or however this would look... 
    // projectRepository would be an instance of whatever i have registered (see below) 
    { 
     auto projects = this.projectRepository.GetProjects(); 
    } 
} 

而在一些啓動區域,我會結合這樣的:

BinderFramework::Register<IProjectRepository, XMLProjectRepository>();What is the most common use sturdy nuget package/library for C++ that does pretty much the same as the C# library by Microsoft called Unity: http://unity.codeplex.com/ 

我一直在尋找了一段時間了,但不能完全找到一個不錯的完整和簡單的解決方案。

這個想法是使用一個衆所周知的框架,而不是寫我自己的片狀代碼。

+0

有C++的IoC庫,但最好先從[Pure DI]開始(http://blog.ploeh.dk/2014/06/10/pure-di/)(這意味着沒有庫的依賴注入),並轉向使用工具,如果它已被證明是有效的。 – Steven

+0

這是必需的,因爲我正在製作一個多平臺解決方案。我的核心應用程序代碼需要與接口一起工作......另外,我還將能夠測試東西。 – Jimmyt1988

+0

是的,你想要應用依賴注入模式並堅持依賴倒置原則。但這些只是模式和原則。您不需要使用這些模式的工具。請閱讀[本文](http://blog.ploeh.dk/2014/06/10/pure-di/)。 – Steven

回答

1

我可能有點晚,但你應該看看Hypodermic

它只是頭部,它帶有一個非常酷的Dsl plus,它已經在生產環境中使用了多年。