我有一个接口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
应该有约束 whereT
应该是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
inKitchen<T>
很容易成为ISnack
. 怎么办?