在我最近一直在做的一些遗留 c# 代码的代码审查中,我看到了许多这样的例子:
class ManagerParentClass
{
public string CustomProperty{get;set;}
public void Log(string message);
void DoABunchOfTasks()
{
new SomethingService().DoSomething(this);
}
}
具有以下内容:
public class SomethingService
{
ManagerParentClass _manager;
void DoSomething(ManagerParentClass manager)
{
_manager = manager;
// do something
_manager.CustomProperty = "hello world";
_manager.Log("said hello world");
}
}
虽然这在表面上工作得很好,但我担心这有点反模式,可能会导致垃圾收集的邪恶事情。
这是否会破坏 .Net 正确清理父对象和子对象的能力中的分代垃圾收集器或其他任何负面影响?