web-dev-qa-db-fra.com

Passer une énumération comme paramètre de méthode

J'ai déclaré un enum:

public enum SupportedPermissions
{
    basic,
    repository,
    both
}

J'ai aussi un POCO comme celui-ci:

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

Maintenant, j'aimerais créer une méthode que je peux utiliser pour créer un nouvel objet File avec:

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;
}

Comment créer le paramètre pour l'énum et comment l'assigner dans mon pseudo-code SupportedPermissions = supportedPermissions.basic afin que mon instance de fichier ait un SupportedPermissions défini?

32
Mike Barnes

Modifiez la signature de la méthode CreateFile pour qu'elle attende une valeur SupportedPermissions au lieu de plain 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;
}

Ensuite, lorsque vous appelez votre méthode, vous passez la valeur SupportedPermissions à votre méthode.

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

Si vous voulez transmettre la valeur à utiliser, vous devez utiliser le type enum que vous avez déclaré et utiliser directement la valeur fournie:

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;
}

Si vous préférez utiliser une valeur fixe, vous n'avez besoin d'aucun paramètre. Au lieu de cela, utilisez directement la valeur enum. La syntaxe est similaire à un membre statique d'une classe:

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

    return file.Id;
}
5
Daniel Hilgarth

Commencez par modifier le paramètre de méthode Enum supportedPermissions à SupportedPermissions supportedPermissions.

Puis créez votre fichier comme ceci

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

Et l'appel à votre méthode devrait être

CreateFile(id, name, description, SupportedPermissions.basic);
5
Ovidiu
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;
}
0
Moo-Juice