PIC*_*ain 4 c# methods static instance non-static
这可能是一个愚蠢的问题,但无论如何我都会问它......我正在用C#.NET编程.我有一个包含非静态实例EventHandler的类.是否可以为静态方法中存在的类的每个实例触发该EventHandler?我知道这是一个很长的镜头!
不,没有。基本上没有办法找到类的所有实例,除非您编写自己的代码来执行此操作。
编辑:很好奇为什么这会被否决。无论如何,添加更多细节:您应该避免这样做。您可以使您的类型实现IDisposable,然后在构造函数中注册静态事件处理程序,并在Dispose方法中取消注册。哎呀,您甚至可以有一个终结器来为您执行此操作,这会降低您的性能,但如果您未能处置实例,至少不会泄漏。
然而,所有这些都是有些严峻的选择。最好尝试重新设计以避免该要求。也许您可以向我们提供有关您正在尝试执行的操作的更多信息,然后我们可以提出解决方法?
您可以这样做,但您需要创建所有对象的静态集合:
public class Thing
{
public static List<Thing> _things = new List<Thing>();
public Thing()
{
_things.Add(this);
}
public static void SomeEventHandler(object value, EventHandler e)
{
foreach (Thing thing in _things)
{
// do something.
}
}
}
Run Code Online (Sandbox Code Playgroud)
你也要注意积累"物".当您不再需要它们时,请确保将它们从列表中删除.
| 归档时间: |
|
| 查看次数: |
1658 次 |
| 最近记录: |