【问题标题】:Common method for several generic classes to use几个泛型类使用的常用方法
【发布时间】:2014-11-20 17:25:07
【问题描述】:

我有几个实现 IMyInterface 的类。该接口包含一个名为 Delete 的方法,因此所有类都定义了自己的 Delete 方法。

我的代码中也有很多地方调用 MyClass1.Delete(myClass1Id) 或 MyClass2.Delete(myClass2Id) 等。

我正在尝试定义一个通用的通用方法,它接受一个通用类参数和一个字符串作为 Id。

我猜它看起来像这样,但我找不到任何有关以这种方式使用泛型类的相关文档:

public static void DeleteGeneric<TMyClass>(string myId)
{
    //call the relevant Delete method for the TMyClass class
}

【问题讨论】:

  • 我不清楚您要做什么。您能否提供一个更完整的示例来说明您正在尝试改进的代码?

标签: c# generics interface


【解决方案1】:

我想你想要这样的代码:

public static void DeleteGeneric<TMyClass>(TMyClass myId) where TMyClass : IMyInterface
{
    myId.Delete();
}

也就是说 TMyClass 必须实现 IMyInterface 接口,并且传递的参数是 TMyClass 的任何类型。

没有泛型可能会更简单

public static void DeleteGeneric(IMyInterface myId)
{
    myId.Delete();
}

免责声明,我在浏览器中输入了这段代码,所以可能存在语法错误。

【讨论】:

    【解决方案2】:

    这里根本不需要使用泛型;只接受接口的一个实例:

    public static void DeleteGeneric(IMyInterface deletable, string myId)
    {
        deletable.Delete(myId);
    }
    

    【讨论】:

    • 您忘记删除类型参数
    猜你喜欢
    • 2012-01-11
    • 2013-10-28
    • 2011-10-20
    • 2022-11-18
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    相关资源
    最近更新 更多