通过正在使用的对象从使用块的范围内访问对象
本文关键字:对象 范围内 访问 | 更新日期: 2023-09-27 18:26:55
我想知道是否可以执行以下操作:
using (MyClass o = new MyClass())
{
TheClassIWantMyClassToSee x = new TheClassIWantMyClassToSee();
x.DoStuff();
}
我想创建一个类(MyClass),并在using块中使用它。在这个块中,我想处理特定类型的对象(TheClassIWantMyClassToSee)。当使用块超出范围时,我想对这些(TheClassIWantMyClassToSee)对象执行某些操作。
是否可以使类透明地知道在其作用域中声明的其他对象?
我意识到我可以将对象实例添加到MyClass对象中,但我想让开发人员更容易地使用我正在构建的API。
欢迎提出任何想法。
谢谢。
MyClass
知道TheClassIWantMyClassToSee
的唯一方法是创建从一个到另一个的引用。没有办法导航和探索作用域中的类。无论作用域是与using块、方法块、foreach循环还是其他循环相关,此语句都为true。
为什么不使用一个简单的MyClass.AddRelationship(TheClassIWantMyClassToSee child)
方法让这个类知道另一个呢?
这些"特定动作"是什么?如果它们是资源清理,那么TheClassIWantMyClassToSee
也应该实现IDisposable
,并且您可以使用另一个using
语句。否则,您可以只使用try
/finally
块:
using (MyClass o = new MyClass())
{
TheClassIWantMyClassToSee x = new TheClassIWantMyClassToSee();
try
{
x.DoStuff();
}
finally
{
// Do stuff here
}
}
无法向隐含在using
语句末尾的finally
块添加代码。
您的设计类型越强,其他人就越容易使用您的API。(intellisense)您应该将其添加到其他对象中,很可能。
您可以尝试将MyClass用作所有"内部"类的工厂,因此您总是有机会将新实例与MyClass实例关联起来。