小编Eva*_*ley的帖子

我如何等待C#事件被提升?

我有一个Sender发送一个类MessageIChannel:

public class MessageEventArgs : EventArgs {
  public Message Message { get; private set; }
  public MessageEventArgs(Message m) { Message = m; }
}

public interface IChannel {
  public event EventHandler<MessageEventArgs> MessageReceived;
  void Send(Message m);
}

public class Sender {
  public const int MaxWaitInMs = 5000;
  private IChannel _c = ...;

  public Message Send(Message m) {
    _c.Send(m);
    // wait for MaxWaitInMs to get an event from _c.MessageReceived
    // return the message or null if …
Run Code Online (Sandbox Code Playgroud)

c# events

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

如何基于C#<4中的参数运行时类型调度方法?

我有一个对象o,其保证在运行时是三种类型之一A,B或者C,所有这些实现公共接口的I.我可以控制I,但不能A,BC.(因此我可以使用空标记接口,或者通过使用接口以某种方式利用类型中的相似性,但我无法添加新方法或更改类型中的现有方法.)

我也有一系列的方法MethodA,MethodBMethodC.o查找运行时类型,然后将其用作这些方法的参数.

public void MethodA(A a) { ... }
public void MethodB(B b) { ... }
public void MethodC(C c) { ... }
Run Code Online (Sandbox Code Playgroud)

使用此策略,现在必须对类型执行检查o以确定应调用哪个方法.相反,我想简单地有三个重载方法:

public void Method(A a) { ... } // these are all overloads of each other
public void Method(B b) { ... }
public void Method(C c) { ... …
Run Code Online (Sandbox Code Playgroud)

c# methods dispatch

5
推荐指数
2
解决办法
807
查看次数

标签 统计

c# ×2

dispatch ×1

events ×1

methods ×1