我使用庫[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',具體取決於哪一個事件,同樣,因爲編譯器說你不能訪問包含類以外的事件處理程序,除了+ =或 - =。 –