metaclass: (Default)
[personal profile] metaclass
https://github.com/SparkViewEngine/spark/blob/master/src/Samples/DirectUsage/ConsoleTemplating/Services/MessageBuilder.cs

А вот насколько подобный код (статик _instance и его инициализация) является кошерным? Ну с interlocked все более-менее понятно, а вот собственно использование синглетонов вместо всяких модных IoC и тому подобного усложняющего все трэша?

Date: 2014-05-19 07:28 pm (UTC)
From: [identity profile] jakobz.livejournal.com
А если уж хочется точно контроллировать когда инстанс поднимется - можно так:
private static readonly Lazy<Singleton> instance = new Lazy<Singleton>(() => new Singleton());

public static Singleton Instance
{
    get { return instanceHolder.Value; }
}

В общем я не могу придумать когда может потребоваться дабл-лок вручную.

Date: 2014-05-21 02:12 pm (UTC)
From: [identity profile] aamonster.livejournal.com
А напомните - в C# static initialization order fiasco остался или как-то регламентирован порядок создания объектов?

Date: 2014-05-21 02:22 pm (UTC)
From: [identity profile] berezovsky.livejournal.com
в стандарте не определён, по факту по тексту класса идёт

Date: 2014-05-21 02:50 pm (UTC)
From: [identity profile] metaclass.livejournal.com
В одном классе хз, в разных - все как положено, по зависимостям.

Date: 2014-05-23 04:02 pm (UTC)
From: [identity profile] viacheslav ivanov (from livejournal.com)
10.5.5.1 Static field initialization
The static field variable initializers of a class correspond to a sequence of assignments that are executed in the textual order in which they appear in the class declaration. .…

10.12 Static constructors
…It is possible to construct circular dependencies that allow static fields with variable initializers to be observed in their default value state.…

Выделение жирным моё.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Nov. 23rd, 2025 09:46 am
Powered by Dreamwidth Studios