[英]How can I use a custom generic interface implementation with private types?
[英]How can I limit what types are used for my generic interface?
我有以下界面:
public interface IService<T>
{
void AddOrUpdate(T tab);
bool Available();
我可以限制此接口,以便它只能用于某些类型吗?
参数名称“tab”的重要性是什么 。 这可能是任何合理的名称,还是与接口的使用位置有关系?
您可以使用where
关键字来限制用于泛型类型的类型。
例:
public interface IService<T>where T:IComparable { }
{
void AddOrUpdate(T tab);
bool Available();
http://msdn.microsoft.com/en-us/library/bb384067.aspx
字母'T'没有意义。 只需指定类型或模板。 你可以用任何字母。 'tab'只是一个名字。 您可以指定任何有意义的名称。
请查看以下有关类型参数约束的文章。 这些约束是使用where关键字定义的。
你可以这样说:
public interface IService<T> where T : Employee
{
void AddOrUpdate(T tab);
bool Available();
}
我可以限制此接口,以便它只能用于某些类型吗?
是的,您可以限制泛型类型使用,如下所示:
public interface IService<T> where T : IServicableType
在这种情况下,T只能是实现(或继承自,类) IServicableType
。
这可能是任何合理的名称,还是与接口的使用位置有关系?
不,参数名称无关紧要。 类的方法的参数名称不需要反映接口的参数名称。 这是因为参数名称不会影响方法的签名。 只有签名必须匹配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.