.net дизайн при использовании модульных тестов, может ли это повредить% времени в GC? - PullRequest
0 голосов
/ 29 ноября 2011

Чтобы иметь возможность макетировать объекты и классы, мы создаем два конструктора.Один без параметров и один конструктор, который принимает зависимости.

Например:

public class MyClass
{
    private readonly ISomeOtherClass someOtherClass;

    public MyClass()
    {
            someOtherClass = new someOtherClass();
    }

    public MyClass(ISomeOtherClass someOtherClass)
    {
            this.someOtherClass = someOtherClass;
    }

    public void MyMethod()
    {
            someOtherClass.DoThis(); //Could be long-running db-call
    }
 }

Теперь, читая http://msdn.microsoft.com/en-us/library/ms998547.aspx#scalenetchapt05%5Ftopic10 и главу «Предотвратить продвижение коротких позиций»-Lived Objects ".

Может ли это быть проблемой и заставить объекты оставаться в ГХ дольше, чем нужно?Если да, есть идеи как решить эту проблему?

1 Ответ

0 голосов
/ 29 ноября 2011

Если вы создаете новый экземпляр MyClass каждый раз, когда он используется, то someOtherClass существует только до тех пор, пока MyClass существует, поэтому вы не будете без необходимости продвигать ссылки. Если вы используете MyClass в качестве синглтона, то вы, вероятно, продвигаете оба объекта ... но это обычно ожидаемое поведение для синглтона.

...