将params关键字与动态类型参数一起使用

新的

我用Add方法声明了一个接口,以添加新项,2个类TopicModelCommentModel存储数据。

我已经在控制台模式下重新编写了代码,如下所示:

interface IAction
{
    void Add<T>(params T[] t) where T : class;
}

class TopicModel
{
    public string Id { get; set; }
    public string Author { get; set; }
}

class CommentModel
{
    public string Id { get; set; }
    public string Content { get; set; }
}

class Topic : IDisposable, IAction
{
    public void Add<T>(params T[] t) where T : class
    {
        var topic = t[0] as TopicModel;
        var comment = t[1] as CommentModel;

        // do stuff...
    }

    public void Dispose()
    {
        throw new NotImplementedException();
    }
}

class MainClass
{
    static void Main()
    {
        var t = new TopicModel { Id = "T101", Author = "Harry" };
        var c = new CommentModel { Id = "C101", Content = "Comment 01" };

        using (var topic = new Topic())
        {
            //topic.Add(t, c);
        }
    }
}

该行topic.Add(t, c)给了我错误消息:

无法从用法中推断出方法'Topic.Add(params T [])'的类型参数。尝试显式指定类型参数。

然后,我再次尝试了:

topic.Add(c, c) // Good :))
topic.Add(t, t, t); // That's okay =))

那是我的问题。我希望该方法接受2种不同的类型(TopicModelCommentModel)。

而且,我不想声明:

interface IAction
{
    void Add(TopicModel t, CommentModel c);
}

因为另一个类可以Add在不同的参数类型内重用方法。

所以,我的问题是:如何更改params T[] t为接受多个参数类型?

用户名

TopicModel和CommentModel必须继承相同的类或实现相同的接口。试试这个 :

interface IAction
{
    void Add<T>(params T[] t) where T : IModel;
}

class IModel
{
}

class TopicModel : IModel
{
    public string Id { get; set; }
    public string Author { get; set; }
}

class CommentModel : IModel
{
    public string Id { get; set; }
    public string Content { get; set; }
}

class Topic : IDisposable, IAction
{
    public void Add<T>(params T[] t) where T : IModel
    {
        var topic = t[0] as TopicModel;
        var comment = t[1] as CommentModel;

        Console.WriteLine("Topic witch ID={0} added",topic.Id);
        Console.WriteLine("Commment witch ID={0} added", comment.Id);
    }

    public void Dispose()
    {

    }
}

class Program
{
    static void Main()
    {
        TopicModel t = new TopicModel { Id = "T101", Author = "Harry" };
        CommentModel c = new CommentModel { Id = "C101", Content = "Comment 01" };

        using (var topic = new Topic())
        {
            topic.Add<IModel>(t, c);
        }

        Console.ReadLine();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当使用关键字与函数结果一起使用时,将引发System.ObjectDisposedException

来自分类Dev

超级关键字如何与对象一起使用

来自分类Dev

将“ nameof”关键字与仅设置属性一起使用

来自分类Dev

EF6-将await关键字与Where()子句一起使用

来自分类Dev

将this关键字与jQuery选择器一起使用

来自分类Dev

将this关键字与jQuery选择器一起使用

来自分类Dev

如何在C#中将params关键字与调用者信息一起使用?

来自分类Dev

与形式(位置),* args和** kwargs一起使用时,显式传递命名(关键字)参数

来自分类Dev

PHP:与函数内的global关键字一起使用时,全局变量将无法按预期工作

来自分类Dev

将IF BEGIN END与CTE一起使用:关键字`End`附近的语法不正确

来自分类Dev

如何将F#的“带有”赋值关键字与记录中的列表属性一起使用?

来自分类Dev

Ruby关键字参数中的奇怪行为与位置混合在一起

来自分类Dev

如何使用params关键字读取参数并实现函数

来自分类Dev

将extern关键字与CHandle一起用于win32事件

来自分类Dev

在运行时检测使用“动态”关键字作为类型参数

来自分类Dev

事件处理功能不能与`this`关键字一起使用

来自分类Dev

子查询可以与VALUES关键字一起使用吗?

来自分类Dev

在XML中将#Required关键字与枚举值一起使用

来自分类Dev

与继承一起使用时,alias_method`或`alias`关键字的异常行为

来自分类Dev

与功能指针一起使用时,什么自动关键字在后台运行?

来自分类Dev

如何在Perl中将我的关键字与文件句柄一起使用?

来自分类Dev

子查询可以与VALUES关键字一起使用吗?

来自分类Dev

何时在C#中将“ new”关键字与结构一起使用

来自分类Dev

在通用类中将模板类与CUDA关键字一起使用

来自分类Dev

为什么“ var”关键字不能与逗号运算符一起使用?

来自分类Dev

Ansible-将set_fact模块与with_items一起使用时,如何继续将新关键字附加到字典中?

来自分类Dev

与“运行关键字如果”一起使用时,机器人框架“按坐标写数据”关键字问题

来自分类Dev

动态添加关键字参数

来自分类Dev

类型错误:意外的关键字参数

Related 相关文章

  1. 1

    当使用关键字与函数结果一起使用时,将引发System.ObjectDisposedException

  2. 2

    超级关键字如何与对象一起使用

  3. 3

    将“ nameof”关键字与仅设置属性一起使用

  4. 4

    EF6-将await关键字与Where()子句一起使用

  5. 5

    将this关键字与jQuery选择器一起使用

  6. 6

    将this关键字与jQuery选择器一起使用

  7. 7

    如何在C#中将params关键字与调用者信息一起使用?

  8. 8

    与形式(位置),* args和** kwargs一起使用时,显式传递命名(关键字)参数

  9. 9

    PHP:与函数内的global关键字一起使用时,全局变量将无法按预期工作

  10. 10

    将IF BEGIN END与CTE一起使用:关键字`End`附近的语法不正确

  11. 11

    如何将F#的“带有”赋值关键字与记录中的列表属性一起使用?

  12. 12

    Ruby关键字参数中的奇怪行为与位置混合在一起

  13. 13

    如何使用params关键字读取参数并实现函数

  14. 14

    将extern关键字与CHandle一起用于win32事件

  15. 15

    在运行时检测使用“动态”关键字作为类型参数

  16. 16

    事件处理功能不能与`this`关键字一起使用

  17. 17

    子查询可以与VALUES关键字一起使用吗?

  18. 18

    在XML中将#Required关键字与枚举值一起使用

  19. 19

    与继承一起使用时,alias_method`或`alias`关键字的异常行为

  20. 20

    与功能指针一起使用时,什么自动关键字在后台运行?

  21. 21

    如何在Perl中将我的关键字与文件句柄一起使用?

  22. 22

    子查询可以与VALUES关键字一起使用吗?

  23. 23

    何时在C#中将“ new”关键字与结构一起使用

  24. 24

    在通用类中将模板类与CUDA关键字一起使用

  25. 25

    为什么“ var”关键字不能与逗号运算符一起使用?

  26. 26

    Ansible-将set_fact模块与with_items一起使用时,如何继续将新关键字附加到字典中?

  27. 27

    与“运行关键字如果”一起使用时,机器人框架“按坐标写数据”关键字问题

  28. 28

    动态添加关键字参数

  29. 29

    类型错误:意外的关键字参数

热门标签

归档