2014-10-27 51 views
1

我有一個Delphi XE5(更新2)程序創建使用IDE的標準'文件|新增|其他| DataSnap服務器| DataSnap REST應用程序'嚮導。德爾福在REST服務器枚舉類型

我似乎無法讓枚舉類型在用作服務器方法的參數時工作。所有其他服務器方法的工作方式,如將其他類作爲參數,字符串等的方法工作。當我嘗試從Web瀏覽器調用具有枚舉參數的方法時,我收到錯誤消息'Project Project1.exe raised exception class TDBXError with message 'TServerMethods1.EnumString method not found in the server method list'

這裏是我的基本測試代碼:

type 
{$METHODINFO ON} 
    TMyEnum=(meOne, meTwo); 

    TServerMethods1 = class(TDataModule) 
    private 
    { Private declarations } 
    public 
    { Public declarations } 
    function EchoString(Value: string): string; 
    function ReverseString(Value: string): string; 
    function EnumString(const AEnum: TMyEnum): string; 
    end; 
{$METHODINFO OFF} 

然而,是什麼奇怪的是,如果它們被包含在另一個類中,然後這個類傳遞參數給我的方法,我可以得到枚舉類型的工作。如果我將枚舉參數更改爲一個整數,那麼這項工作,但我真的不想這樣做。

回答

0

使用枚舉不支持作爲方法參數。如果Datasnap在其不支持的方法上找到參數類型,則表示該方法不存在,這會導致您看到的錯誤。

有關支持的參數類型的列表,看看TDSServerClass文檔:

http://docwiki.embarcadero.com/Libraries/XE7/en/Datasnap.DSServer.TDSServerClass

+0

奇怪的是,在枚舉類雖然而非方法paramters性工作。我可以忍受這一點雖然。感謝您的幫助。 – 2014-10-28 10:19:43

+0

你是如何將該類傳遞給該方法的?什麼是方法簽名?你使用GET還是另一個http動詞?根據你的操作方式,當你將一個對象傳遞給一個方法時,它首先通過一個解串器,而解串器可能支持枚舉,即使Datasnap路由器沒有。 – 2014-10-28 10:37:38