Объявление частного статического члена с экземпляром во всех классах - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь разобраться с кодом.У меня трудное время, чтобы увидеть, есть ли у него какое-либо преимущество.Это выглядит подозрительно, но я не совсем понимаю, как работают статические объявления.

Один класс, в котором определены все сопоставления:

public class AutoMapperConfig
{
    public static MapperConfiguration MyMapperconfig;

    public static void RegisterMapping()
    {
        MyMapperconfig = new MapperConfiguration(conf =>
        {

            conf.CreateMap<SomeObject, SomeOther>());
            //MANY MORE...
        }
    }

Затем в global.asax.cs вызывается регистрация.

AutoMapperConfig.RegisterMapping();

, а затем во множествеиз других классов маппер объявляется как приватная статика, подобная этой

private static IMapper _Mapper = AutoMapperConfig.MyMapperconfig.CreateMapper();

и используется

_Mapper.Map<SomeObject>(SomeOther);

Мой вопрос:

Разве это не означает, что каждыйУ класса есть собственный закрытый экземпляр преобразователя, но они точно такие же, так как загружают одну и ту же конфигурацию?

Разве не было бы разумнее просто использовать статический сопоставитель тогда?

1 Ответ

0 голосов
/ 20 ноября 2018

Это умнее, если вы хотите запускать свой код только один раз!

, когда вы создаете экземпляр класса, он будет доступен в памяти, когда вы создадите его экземпляр, пока не будет очищен GC.Но в другом сценарии он будет доступен, когда ваш проект начнется до конца проекта.когда вырастет ваш класс, это станет кошмаром, потому что тогда у вас есть толстый объект, который остается в памяти все время, а не только тогда, когда вам это нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...