[英]Use interface as generic type with new constraint
在 C# 中,我定義了一個接口,如下所示:
public interface IClassA
{
IEnumerable<T> Search<T>()
where T : new();
}
和
public interface IClassB
{
...
}
如果我做
public DoSomething(IClassA a)
{
// Error: IClassB must be a non-abstract type with a public parameterless constructor.
var result = a.Search<IClassB>();
}
我該如何解決這個問題,以便我可以在IClassA.Search 中將IClassB作為泛型類型傳遞? 或者這是不可能的?
您在方法中添加了約束new() ,這意味着泛型方法聲明中的類型參數必須具有公共無參數構造函數。 接口不能有構造函數。 刪除where T: new()
約束。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.