我想知道是否可以执行以下操作:
using (MyClass o = new MyClass())
{
TheClassIWantMyClassToSee x = new TheClassIWantMyClassToSee();
x.DoStuff();
}
我想创建一个类(MyClass)并在using块中使用它。在这个块中,我想使用某种类型的对象(TheClassIWantMyClassToSee)。当使用块超出范围时,我想对这些(TheClassIWantMyClassToSee)对象执行某些操作。
是否可以让一个类透明地了解在其作用域中声明的其他对象?
我意识到我可以将对象实例添加到MyClass对象中,但我想让使用我正在构建的API的开发人员更容易。
欢迎任何想法。
感谢。
答案 0 :(得分:1)
让MyClass
了解TheClassIWantMyClassToSee
的唯一方法是创建从一个到另一个的引用。无法导航和浏览范围内的类。无论范围是否与使用块,方法块,foreach循环或其他相关,该陈述都是正确的。
为什么不使用简单的MyClass.AddRelationship(TheClassIWantMyClassToSee child)
方法让这个类知道另一个?
答案 1 :(得分:0)
这些“某些行为”是什么?如果他们是资源清理,那么TheClassIWantMyClassToSee
也应该实现IDisposable
,您可以使用另一个using
语句。否则,您只能使用try
/ finally
块:
using (MyClass o = new MyClass())
{
TheClassIWantMyClassToSee x = new TheClassIWantMyClassToSee();
try
{
x.DoStuff();
}
finally
{
// Do stuff here
}
}
无法在finally
块中添加代码,隐含在using
语句的末尾。
答案 2 :(得分:0)
您的设计输入越强,其他人使用您的API就越容易。 (intellisense)你应该将它添加到其他对象,很可能。
答案 3 :(得分:0)
您可以尝试将MyClass用作所有“内部”类的工厂,因此您总是有机会将新实例与MyClass实例相关联。