繁体   English   中英

如何限制用于通用接口的类型?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM