Заполнение свойств с помощью фигурных скобок после использования заводского метода

#c# #properties #instance #curly-braces #generic-type-argument

Вопрос:

Можно ли создать метод, возвращающий новый объект, который я все еще могу использовать:

 { variable 1 = "content1", variable2 = "content2" }
 

Потому что на данный момент, после получения объекта, я вместо этого использую следующее:

 tempObject.variable1 = "content1";
tempObject.variable2 = "content2";
 

Так, например:

 var tempNewObject = MDBShorterManager.Create<TblUser>() { variable1 = "content1", variable2 = "content2" };
 

Мой нынешний метод:

 public T Create<T>() where T : MDBShorter
{
    try
    {
        var tempObject = (T)Activator.CreateInstance(typeof(T));

        tempObject.mdbShorterManager = this;

        try
        {
            actionInjectDataToMDBShorter?.Invoke(tempObject);
        }
        catch(Exception ex)
        {
            ErrorLog.cw(ex.Message);
        }

        return tempObject;
    }
    catch (Exception ex)
    {
        ErrorLog.cw(ex.Message);
        return null;
    }
}
 

Комментарии:

1. Если вам необходимо инициализировать свойства при создании объекта, рассмотрите возможность реализации параметров конструктора. Затем реализуйте свой метод создания фабрики соответствующим образом.

Ответ №1:

Нет, на момент создания поста в C#такого не было. Возможно, в будущем они добавят такой синтаксический сахар, но в настоящее время его можно использовать только с ключевым словом «новый» рядом с вызовом конструктора.