2014-07-15 139 views
2

我有兩個這樣的類。找不到類型''的構造函數

public class MyClass 
{ 
    protected readonly int SomeVariable; 

    public MyClass(){} 

    public MyClass(int someVariable) 
    { 
     SomeVariable = someVariable; 
    } 
} 

public class MyClass2 : MyClass {} 

有沒有辦法使用Activator.CreateInstance創建類的實例? 我寫了這樣的事情:

public class ActivatorTest<TViewModel> 
    where TViewModel : MyClass 
{ 
    public void Run() 
    { 
     var viewModel = Activator.CreateInstance(typeof(TViewModel), new Object[] {2}) as TViewModel; 
    } 
} 

new ActivatorTest<MyClass2>().Run(); 

但是我有一個例外,構造函數型「MyClass2找不到。

任何想法?

+1

您將參數傳遞給構造函數,但沒有帶2個參數的構造函數。這就是錯誤告訴你的。 – cgTag

+1

我用我的近距離投票「offtopic - typo」(我收回),但你的問題似乎是複製[C#激活createInstance擴展類](http://stackoverflow.com/questions/12113131/C鋒利活化劑 - 的CreateInstance換延伸級)。 – CodeCaster

回答

3

該類沒有構造函數將兩個整數作爲參數。在這條線上

var viewModel = Activator.CreateInstance(typeof(TViewModel), new Object[] {2,3}) as TViewModel; 

嘗試兩個int參數添加到您的構造函數在這裏添加這樣一個構造函數或更正您在傳遞參數

3

new Object[] {2,3}

而且也沒有構造函數接受兩個參數(在顯示的代碼中)。

0

MyClass2只有默認的無參數構造函數。它不會繼承構造函數MyClass(int)

相關問題