как вернуть guid из класса в контроллере - PullRequest
1 голос
/ 18 августа 2010

Есть ли способ вернуть 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();
        }
    }

Ответы [ 4 ]

1 голос
/ 18 августа 2010

Я бы создал объект-обертку, который может содержать ваши 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 голос
/ 18 августа 2010

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

 public ObjectCreateStatus AddSchedule(Schedule schedule, out Guid guid) { }
0 голосов
/ 18 августа 2010

Рассмотрим вариант создания 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 голосов
/ 18 августа 2010

Вы можете использовать параметр 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();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...