2011-12-14 140 views
1

我創造了我的課了下面的構造函數:C#構造函數重載

public class AccountService : IAccountService 
{ 

    public AccountService(Meta meta) 
    { 
     Initialize(meta.DataSourceID); 
    } 

    public AccountService(string dataSourceID) 
    { 
     Initialize(dataSourceID); 
    } 

然而,當我調用類:

_accountService = new AccountService(vm.Meta); 

我得到以下信息:

錯誤16 'AccountService.AccountService(string)'的最佳重載方法匹配有一些無效的 參數

有沒有什麼基本的東西我在這裏失蹤?當intellisense編碼給我兩個選項和 當我使用intellisense選擇vm.Meta時沒有語法錯誤?我需要在 接口中聲明構造函數嗎?

+7

什麼是vm.Meta的類型。如果vm是Meta的一個實例,則通過** vm **而不是vm.Meta。 – adatapost 2011-12-14 02:55:13

回答

2

我需要在接口中聲明構造函數嗎?

不可以。您不能在接口中decalre構造函數。接口表示您的類型的公共API的聲明;他們不以任何方式指定實現類是如何創建

你的代碼是正確的,在概念上至少;問題可能是vm.Meta不是Meta類型,或者是從Meta繼承的類型。