C#: Как обеспечить безопасные потоки объектов с одним средством для действительных комбинаций свойств?C#

Место общения программистов C#
Anonymous
 C#: Как обеспечить безопасные потоки объектов с одним средством для действительных комбинаций свойств?

Сообщение Anonymous »

context
Я работаю над проектом C#, где я хочу достичь следующего поведения:

[*] У меня есть классы c1 to cn с конкретной допустимой комбинацией для их свойств.
[*] Действительные комбинации свойств хранятся в базе данных < /li>
Я хочу, чтобы каждый класс C1 до Cn имел уникальный экземпляр для каждой допустимой комбинации свойств.
Все действительные экземпляры должны быть загружены из доступ к одной базе данных. > Структура базы данных выглядит следующим образом: < /p>

Код: Выделить всё

Table C1
P1 P2 P3 P4
---------------
1  1  1  1
2  1  1  1
3  1  1  3
...
реализация
Вот псевдокод моей реализации:

Код: Выделить всё

public static class Info
{
private static List ValidC1s = new();
...
private static List ValidCns = new();
private static bool initialized = false;

static Info()
{
foreach (Ci valid property combination)
ValidCis.Add(Ci.Get(validProperties));
initialized = true;
}
// for each Ci
public static Ci? GetCi(Properties properties)
{
return ValidCis.SingleOrDefault(x => x.Properties == properties);
}
}

public class Ci
{
private Ci(Properties properties)
{
this.Properties = properties;
}

public static Ci Get(Properties properties)
{
if (Info.Initialized)
{
Ci ci = Info.GetCi(properties);
if (ci==null) throw Exception;
return ci
}
else
{
return new Ci(properties);
}
}

public Properties Properties { get; }
}

мои проблемы :
Я предполагаю, что вызов info.initialized в функции cis 'get убедитесь, что экземпляры создаются только из класса Info.
Однако CHATGPT выразил обеспокоенность по поводу безопасности потока, если другие поток доступны до завершения инициализации. Я не знаю, как проверить такой сценарий, поэтому мой вопрос: < /p>
Вопросы < /strong>
мой подход защищен и правильный? Br /> Если нет, то какой бы лучший способ реализовать такое поведение? < /p>

Подробнее здесь: https://stackoverflow.com/questions/794 ... rty-combin

Вернуться в «C#»