我正在處理動態(在運行時)加載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分析服務器。但是,如果我想調用 此方法與參數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
,但我不知道如何從裝配得到動態枚舉類型,並把它傳遞給方法。有人知道解決方案嗎?
非常感謝您的回答和幫助!
我試過這個,但是不行。即使我添加引用到程序集,並嘗試這我得到錯誤: '方法有一些無效的參數' – 2010-04-30 08:48:56