我使用库[1]限定一些东西我想利用:传递一个事件作为参数
public delegate void FooHandler(int i);
public delegate void BarHandler(string s);
public class Foo
{
public event FooHandler Fooh;
}
public class Bar
{
public event BarHandler Barh;
}
我想有一个短期存储器,我可以“重视” 这些事件:
public class ShortTermMemory<T>
{
public ShortTermMemory(??? arg)
{
arg += t => Remeber = t;
}
public T Remember { get; private set; }
}
和地方重视他们像
var foo = new Foo();
var bar = new Bar();
var intmemory = new ShortTermMemory<int>(foo.Fooh);
var stringmemory = new ShortTermMemory<string>(bar.Barh);
这是IM可能是因为:
- ???是(有些可以理解的)不是有效的类型声明,
- “事件只能在左手侧使用+ =或 - =”
有什么我可以做,以解决这个问题,或者这在C#中根本不可能?我想有编译时保证ShortTermMemory
仅仅是“喂”由一个事件源,它是在编译时已知具有类型T.的单个参数
[1]:实施例实施仅用于说明目的
类型的???可以是'FooHandler'或'BarHandler',具体取决于哪一个事件,同样,因为编译器说你不能访问包含类以外的事件处理程序,除了+ =或 - =。 –