как вернуть guid из класса в контроллере

Есть ли способ вернуть Guid с кодом ниже? Например, то, что я передаю в AddSchedule, это класс. Я хочу вернуть идентификатор из класса, чтобы я мог что-то с ним в контроллере. Как мне изменить свой код для решения этой проблемы?

Контроллер

ModelService.AddSchedule(
                new Schedule
                {
                 Id = Guid.Empty,
                 Start = start,
                 Stop = end
                });

Что я хочу сделать с возвращаемым Guid

 ModelService.AddScheduleToPerson(
                new Schedule
                {
                 Id = ?,   // get this from above
                 UserId = userid,
                 User = username
                });

Модель

public ObjectCreateStatus AddSchedule(Schedule schedule)
    {
        var client = new Services.ConfigurationClient();
        try
        {
            ConfigurationMessage cMsg =
                client.ConfigService.AddSchedule(
                    this.ControllerBase.SessionVariables.Credentials,
                    schedule
                    );
            if (cMsg.Result == ConfigurationResultEnum.Success)
                return ObjectCreateStatus.Success;                
            return ObjectCreateStatus.GeneralError;
        }
        finally
        {
            client.Close();
        }
    }
1
задан hersh 19 August 2010 в 00:48
поделиться

4 ответа

Если вы хотите вернуть GUID, а также ObjectCreateStatus, вы можете рассмотреть возможность использования для него параметра out.

 public ObjectCreateStatus AddSchedule(Schedule schedule, out Guid guid) { }
1
ответ дан 2 September 2019 в 22:03
поделиться

Я бы создал объект-оболочку, который может содержать как ваш ObjectCreateStatus , так и ваш Guid и верните это. Примерно так:

public class ObjectCreateResult
{
    public ObjectCreateStatus CreateStatus { get; set; }
    public Guid CreateGuid { get; set; }
}


public ObjectCreateResult AddSchedule(Schedule schedule)
{
    ObjectCreateResult result = new ObjectCreateResult();

    var client = new Services.ConfigurationClient();
    try
    {
        ConfigurationMessage cMsg =
            client.ConfigService.AddSchedule(
                this.ControllerBase.SessionVariables.Credentials,
                schedule
                );
        if (cMsg.Result == ConfigurationResultEnum.Success)
        {
            result.CreateStatus = ObjectCreateStatus.Success;
            result.CreateGuid = Guid.NewGuid(); // Set your actual Guid here
        }
        else
        {
            result.CreateStatus = ObjectCreateStatus.GeneralError;
            result.CreateGuid = Guid.Empty;
        }

    }
    finally
    {
        client.Close();
    }

    return result;
}
1
ответ дан 2 September 2019 в 22:03
поделиться

Подумайте о том, чтобы сделать ObjectCreateStatus классом:

public class ObjectCreateStatus {
  public bool WasSuccessful { get; private set; }
  public Guid ScheduleId { get; private set; }

  ctor(ConfigurationResultEnum result, Guid guid) {
    WasSuccessful = result == ConfigurationResultEnum.Success;
    ScheduleId = guid
  }
}

public ObjectCreateStatus AddSchedule(Schedule schedule)
{
    var client = new Services.ConfigurationClient();
    try
    {
        ConfigurationMessage cMsg =
            client.ConfigService.AddSchedule(
                this.ControllerBase.SessionVariables.Credentials,
                schedule
                );
        return new ObjectCreateStatus(cMsg.Result, cMsg.Guid(?))
    }
    finally
    {
        client.Close();
    }
}
0
ответ дан 2 September 2019 в 22:03
поделиться

Вы можете использовать параметр out . Я назначаю GUID в начале метода, но вы можете изменить эту логику в зависимости от ваших требований. Вот ваш измененный код:

public ObjectCreateStatus AddSchedule(Schedule schedule, out Guid theGuid)
    {
        theGuid = Guid.NewGuid();
        var client = new Services.ConfigurationClient();
        try
        {
            ConfigurationMessage cMsg =
                client.ConfigService.AddSchedule(
                    this.ControllerBase.SessionVariables.Credentials,
                    schedule
                    );
            if (cMsg.Result == ConfigurationResultEnum.Success)
                return ObjectCreateStatus.Success;                
            return ObjectCreateStatus.GeneralError;
        }
        finally
        {
            client.Close();
        }
    }
0
ответ дан 2 September 2019 в 22:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: