当前位置:  开发笔记 > 编程语言 > 正文

将void传递给泛型类

如何解决《将void传递给泛型类》经验,为你挑选了1个好方法。

我正在尝试创建一个表单,在处理特定任务时将其动画化(作为委托人传递给构造函数).它工作正常,但我遇到的问题是,如果我想要执行的特定方法的返回类型为void,我无法实例化我的泛型类的副本.

我知道这是设计和所有,但我想知道是否有这样的情况已知的解决方法.

如果它有助于我的所有窗体看起来像这样(为简洁起见修剪):

public partial class operatingWindow : Form
{
    public delegate T Operation();
    private Operation m_Operation;

    private T m_ReturnValue;
    public T ValueReturned { get { return m_ReturnValue; } }

    public operatingWindow(Operation operation) { /*...*/ }
}

我称之为:

operatingWindow processing = new operatingWindow(new operatingWindow.Operation(this.doStuff));
processing.ShowDialog();

// ... 
private int doStuff()
{
    Thread.Sleep(3000);

    return 0;
}

laktak.. 6

不,你需要创建一个重载来做到这一点.

例如

public operatingWindow(Action action) 
{ 
    m_Operation=() => { action(); return null; }
}

此外,您不需要定义自己的委托,您可以使用Func和Action.



1> laktak..:

不,你需要创建一个重载来做到这一点.

例如

public operatingWindow(Action action) 
{ 
    m_Operation=() => { action(); return null; }
}

此外,您不需要定义自己的委托,您可以使用Func和Action.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有