我有以下類定義:試圖構建C#泛型類型失敗MissingMethodException
public abstract class ControllerBase<T, V> : Controller where T : EntityBase<T> where V : GenericRepository<T>
再後來就在課堂上,我有以下代碼:
private V _repo;
...
_repo = (V)Activator.CreateInstance(typeof(V), _dbC, _c);
這只是編譯精細。然後我有一個類定義如下:
public class SecurityRoleController : ControllerBase<SecurityRole, GenericRepository<SecurityRole>>
這也編譯得很好。但是,當我嘗試在我的瀏覽器中打開/ SecurityRole時,我得到一個異常,即Constructor on type GenericRepository'1 not found
。 (請注意,它實際上是異常中的倒退,但打破了SO格式化。)儘管GenericRepository<T>
具有公共構造函數,但在嘗試直接創建類的實例時工作得很好。
任何人都知道我可以如何正確構建一個類的通用實例嗎?
TIA,
班吉
編輯:
構造的GenericRepository
:
public GenericRepository(DbContext dbContext, Context c, string[] includes = null)
{
_dbContext = dbContext;
_c = c;
if (includes != null)
{
_includes = includes;
}
return;
}
而且,該種_dbC
和_c
是DbContext
和Context
,該類型的GenericRepository
要求在它的構造函數 - 是的,我從.GetType().FullName
得到這些。有什麼想法嗎?
當你說它「的作品就好了一個公共構造」 - 它是一個公共*參*構造函數? –
不,它是一個公共構造函數,它接受我通過上面的Activator.CreateInstance行傳遞的兩個參數。對不起 - 好的電話。 – benjy
你的代碼看起來不錯。你可以請張貼你的構造函數聲明和*精確*類型(最好通過輸出'_dbC'和'_c'的'_dbC.GetType()。FullName')的結果嗎? –