小编nul*_*Dev的帖子

通用类的通用父类

我正在使用一个虚构的例子.说,我有一个Widget类,如:

abstract class Widget
{
Widget parent;
}
Run Code Online (Sandbox Code Playgroud)

现在,我的其他类将从这个Widget类派生,但是假设我想在定义派生类型时在类中加入一些约束,这样只有特定类型的小部件才能成为特定类型的Widget的父类.

例如,我从Widget类,WidgetParent和WidgetChild派生了两个小部件.在定义子类时,我想将父类型定义为WidgetParent,这样我每次使用它时都不必输入父类.

确切地说,我希望做的是:

// This does not works!
class Widget<PType>: where PType: Widget
{
    PType parent;
}

class WidgetParent<Widget>
{
    public void Slap();
}

class WidgetChild<WidgetParent>
{
}
Run Code Online (Sandbox Code Playgroud)

因此,当我想访问WidgetChild的父级时,而不是以这种方式使用它:

WidgetParent wp = wc.parent as WidgetParent;
if(wp != null)
{
    wp.Slap();
}
else throw FakeParentException();
Run Code Online (Sandbox Code Playgroud)

我想以这种方式使用它(如果我可以使用泛型):

wc.parent.Slap();
Run Code Online (Sandbox Code Playgroud)

c# generics

4
推荐指数
1
解决办法
3868
查看次数

如何知道何时为表单显示消息框?

在我的应用程序中,我有一个在后台线程上运行的任务.当在UI线程中显示MessageBox或任何模态对话框时,我需要在后台线程中发出通知.

虽然我可以通过在显示MessageBox之前调用某个函数来手动完成它,但是如果我不需要它会很棒.

例如:

backgroundThread.MessageShown(); // I do not want to call this explicitly every time!
MessageBox.Show("Task halted!");
Run Code Online (Sandbox Code Playgroud)

我猜我可能会有一些信息可以挂钩.即使在主GUI线程中,是否有任何消息/事件在显示模式对话框之前被触发?

好的,这是要求.我有一些在UI线程上完成的任务,我必须在一个单独的对话框上显示进度,该对话框已在工作线程上显示.我知道它应该是必须在工作线程上完成的任务,但目前的情况暂时无法改变.

除了一个小故障外,每件事情都运行良好 - 如果UI线程中显示了一个消息框,它将隐藏在进度对话框下方.因此,用户永远不会知道UI正在等待输入.我需要一种方法来通知已显示模式对话框,我应该隐藏进度对话框.

现在,我必须在每次调用MessageBox之前显式隐藏它.

我希望这可以解释.

c# forms

2
推荐指数
1
解决办法
2534
查看次数

2
推荐指数
1
解决办法
3058
查看次数

'/'应用程序中的服务器错误

我在asp.net 2.0中创建了一个Web应用程序.这在我的本地机器上工作正常.但是,当尝试在具有Windows 2003服务器的服务器上部署它时,我收到错误:

'/'应用程序中的服务器错误.


分析器错误

说明:解析为此请求提供服务所需的资源时发生错误.请查看以下特定的解析错误详细信息并相应地修改源文件.

分析器错误消息:文件'/MasterPage.master'不存在.

来源错误:

Line 1:  <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="LinkChecker Home " %>
Line 2:  <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server">
Line 3:  
Run Code Online (Sandbox Code Playgroud)

源文件: /LinkChecker/Default.aspx :1

知道如何解决这个问题吗?

c# asp.net .net-2.0

1
推荐指数
1
解决办法
1331
查看次数

如何知道应用程序尝试访问哪些文件?

我如何知道应用程序尝试访问哪些文件和注册表项?

file-io

1
推荐指数
1
解决办法
211
查看次数

这段代码是否有LINQ等价物?

我是LINQ的绝对初学者.

可以GetAnimals<T>()用LINQ编写代码吗?

ObservableCollection<Animal> allAnimals = new ObservableCollection<Animal>();

public IEnumerable<T> GetAnimals<T>() where T: Animal
{
    foreach (var animal in allAnimals)
        if (animal.GetType() == typeof(T))
            yield return (T)animal;
}
Run Code Online (Sandbox Code Playgroud)

c# linq

1
推荐指数
1
解决办法
95
查看次数

标签 统计

c# ×5

.net-2.0 ×1

asp.net ×1

datagridview ×1

file-io ×1

forms ×1

generics ×1

linq ×1

winforms ×1