我有一个接口ISnack
,当它由类实现时,它应该有一个默认的无参数构造函数。基本上这个:有没有一种方法来执行没有通用约束的无参数构造函数
public interface ISnack<T> where T : new()
{
}
我使用<T> where T : new()
只是为了强制无参数的构造函数。
然后,我会实现这个接口是这样的:
public class Cutlet : ISnack<Cutlet>
{
}
这个工作,它只是确保Cutlet
类有一个参数的构造函数。
现在我有一个抽象基类Kitchen
:
public abstract class Kitchen<T> where T : ISnack
{
}
的要求是:Kitchen
应该有约束,其中T
应该是一个ISnack
。 但这不会工作,因为不存在ISnack
,但只有ISnack<T>
。
如果我想这
public abstract class Kitchen<T> where T : ISnack<T>
{
}
它不会编译('T' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'T' in the generic type or method 'ISnack<T>'
),也将没有任何意义在我的上下文。
如果我能迫使ISnack
s至具有参数的构造函数而不受T
类型参数约束,那么在T
Kitchen<T>
很容易被一个ISnack
。如何去做呢?
Marc,Ditto!你已经概述了所有我已经试过..嗯运行时间是我的选择我猜我 – nawfal
@nawfal如果没关系,你可以添加第二个通用的参数到厨房,这应该工作:'抽象类厨房其中T:ISnack
S:new()' –@FelixK。你能否让它成为另一个答案? – nawfal