Я работаю над программой, которая динамически (во время выполнения) загружает библиотеки DLL.
Для примера: Microsoft.AnalysisServices.dll
.
В этой dll у нас есть перечисление:
namespace Microsoft.AnalysisServices
{
[Flags]
public enum UpdateOptions
{
Default = 0,
ExpandFull = 1,
AlterDependents = 2,
}
}
и у нас также есть это class Cube
:
namespace Microsoft.AnalysisServices
{
public sealed class Cube : ...
{
public Cube(string name);
public Cube(string name, string id);
..
..
..
}
}
Я динамически загружаю эту dll и создаю объект Cube
. Чем я вызываю метод Cube.Update()
. Этот метод развертывает Cube на сервере SQL Analysis. Но если я хочу позвонить
этот метод с параметрами Cube.Update(UpdateOptions.ExpandFull)
я получаю ошибку, потому что метод не получает соответствующий параметр.
Я уже пробовал это, но не работает:
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)
Я знаю, что ошибка в параметре myEnumValue
, но я не знаю, как получить динамический тип enum из сборки и передать его методу. Кто-нибудь знает решение?
Большое спасибо за ответы и помощь!