Je travaille sur un programme qui charge dynamiquement (en exécution) les DLLs.
Pour un exemple: Microsoft.AnalysisServices.dll
.Passe la valeur enum à la méthode qui est appelée par l'objet dynamique
Dans ce dll nous avons ce ENUM:
namespace Microsoft.AnalysisServices
{
[Flags]
public enum UpdateOptions
{
Default = 0,
ExpandFull = 1,
AlterDependents = 2,
}
}
et nous avons aussi ce class Cube
:
namespace Microsoft.AnalysisServices
{
public sealed class Cube : ...
{
public Cube(string name);
public Cube(string name, string id);
..
..
..
}
}
je charger dynamiquement cette dll et créer objet Cube
. Que j'appelle une méthode Cube.Update()
. Cette méthode déploie le serveur Cube to SQL Analysis. Mais si je veux appeler cette méthode avec les paramètres Cube.Update(UpdateOptions.ExpandFull)
j'obtiens l'erreur, parce que la méthode n'obtient pas le paramètre approprié.
J'ai déjà essayé, mais ne fonctionne pas:
dynamic updateOptions = AssemblyLoader.LoadStaticAssembly("Microsoft.AnalysisServices", "Microsoft.AnalysisServices.UpdateOptions");//my class for loading assembly
Array s = Enum.GetNames(updateOptions);
dynamic myEnumValue = s.GetValue(1);//1 = ExpandFull
dynamicCube.Update(myEnumValue);// == Cube.Update(UpdateOptions.ExpandFull)
Je sais que l'erreur est dans le paramètre myEnumValue
mais je ne sais pas comment obtenir dynamiquement le type ENUM de l'assemblage et le transmettre à la méthode. Est-ce que quelqu'un connaît la solution?
Merci beaucoup pour vos réponses et votre aide!
J'ai essayé ceci, mais ne fonctionne pas. Même si j'ajoute refernece à l'assemblage et que j'essaie cela, j'obtiens une erreur: 'la méthode a des arguments invalides ' –