我有以下界面:
public interface IService<T>
{
void AddOrUpdate(T tab);
bool Available();
我可以限制此界面,使其只能用于某些类型吗?
什么是参数名称“标签”的重要性。这可能是任何合理的名称,还是与使用接口的位置有关系?
答案 0 :(得分:5)
您可以使用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'只是一个名字。您可以指定任何有意义的名称。
答案 1 :(得分:2)
请查看以下有关Constraints on Type Parameters的文章。这些约束是使用where关键字定义的。
答案 2 :(得分:2)
您可以这样说:
public interface IService<T> where T : Employee
{
void AddOrUpdate(T tab);
bool Available();
}
答案 3 :(得分:1)
我可以限制此界面,使其只能用于某些类型吗?
是的,您可以限制泛型类型用法:
public interface IService<T> where T : IServicableType
在这种情况下,T只能是实现(或继承自,类)IServicableType
的类型。
这可能是任何明智的名称,还是与使用界面的位置有关系?
不,参数名称无关紧要。类的方法的参数名称不需要反映接口的参数名称。这是因为参数名称不会影响方法的签名。只有签名必须匹配。