2011-02-28 58 views
0

在Visual Studio 2010中這是可能的...... 我有一個structuremap註冊表類:是否有可能新的類註冊到Visual Studio中的另一個類2010

public class RepositoryRegisters: IRegistry 
{ 
    public RepositoryRegisters() 
    { 
     For<IUserRepository>().Use<UserRepository>(); 
     For<IGroupRepository>().Use<GroupRepository>(); 
    } 
} 

現在如果我增加新的類, implements IRepository<T>

我希望它自動添加到上面的類的構造函數(RepositoryRegisters)。 所以,如果我加ie即。 MyRepository類,Visual Studio會自動將此行添加到RepositoryRegisters構造函數中:

For<IMyRepository>().Use<MyRepository>(); 

這可能嗎?

回答

1

如果您使用scan with DefaultConvention,只要遵循相同的命名約定,就不需要向註冊表添加其他任何內容。 ( - > UserRepository等IUserRepository)

Scan(scanner => 
    { 
     scanner.AssemblyContainingType<IRepository<>>(); 
     scanner.WithDefaultConventions(); 
    }); 

這將通過名稱的所有實施方式中連接到一個接口。

0

是的,但最終您需要inversion of control

編輯:你也可以嘗試一些Reflection魔法。

+0

好吧,但與ioc和反射這是可能的只有在運行時。,我希望這是在設計時間完成。 – Luka 2011-02-28 10:12:19

+0

我想要這樣的東西:用戶右鍵單擊Visual Studio項目中的文件夾,他選擇添加新項目,並從列表中選擇我的自定義類項目。然後,當類被插入到解決方案文件夾中時,Visual Studio會自動打開RepositoryRegisters.cs文件,找到其構造函數並添加一行代碼。 – Luka 2011-02-28 10:14:49

相關問題