Подтвердить что ты не робот

Передать в перечисление как параметр метода

Я объявил перечисление:

public enum SupportedPermissions
{
    basic,
    repository,
    both
}

У меня также есть POCO:

public class File
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public SupportedPermissions SupportedPermissions { get; set; }      
}

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

public string CreateFile(string id, string name, string description, Enum supportedPermissions)
{
    file = new File
    {  
        Name = name,
        Id = id,
        Description = description,
        SupportedPermissions = supportedPermissions.basic
    };

    return file.Id;
}

Как мне создать параметр для перечисления и как бы присвоить его, как в моем псевдокодеке SupportedPermissions = supportedPermissions.basic, чтобы в моем экземпляре File был установлен SupportedPermissions?

4b9b3361

Ответ 1

Измените подпись метода CreateFile, чтобы ожидать значение SupportedPermissions вместо простого Enum.

public string CreateFile(string id, string name, string description, SupportedPermissions supportedPermissions)
{
    file = new File
    {  
        Name = name,
        Id = id,
        Description = description,
        SupportedPermissions = supportedPermissions
    };

    return file.Id;
}

Затем, когда вы вызываете свой метод, вы передаете значение SupportedPermissions вашему методу

  var basicFile = CreateFile(myId, myName, myDescription, SupportedPermissions.basic);

Ответ 2

Если вы хотите передать значение, которое вы хотите использовать, вы должны использовать указанный тип перечисления и напрямую использовать предоставленное значение:

public string CreateFile(string id, string name, string description,
              /* --> */  SupportedPermissions supportedPermissions)
{
    file = new File
    {  
        Name = name,
        Id = id,
        Description = description,
        SupportedPermissions = supportedPermissions // <---
    };

    return file.Id;
}

Если вы хотите использовать фиксированное значение, вам вообще не нужен какой-либо параметр. Вместо этого прямо используйте значение перечисления. Синтаксис похож на статический член класса:

public string CreateFile(string id, string name, string description) // <---
{
    file = new File
    {  
        Name = name,
        Id = id,
        Description = description,
        SupportedPermissions = SupportedPermissions.basic // <---
    };

    return file.Id;
}

Ответ 3

Сначала измените параметр метода Enum supportedPermissions на SupportedPermissions supportedPermissions.

Затем создайте свой файл следующим образом

file = new File
{  
    Name = name,
    Id = id,
    Description = description,
    SupportedPermissions = supportedPermissions
};

И вызов вашего метода должен быть

CreateFile(id, name, description, SupportedPermissions.basic);

Ответ 4

public string CreateFile(string id, string name, string description, SupportedPermissions supportedPermissions)
{
    file = new File
    {  
       Name = name,
        Id = id,
        Description = description,
        SupportedPermissions = supportedPermissions
    };

    return file.Id;
}