2017-02-16 26 views

回答

2

爲了正確地包含Azure函數的擴展方法,您可以像所有其他情況一樣使用#load,關於擴展方法需要位於頂級類的要求的唯一區別是使它們成爲頂級級別的方法:)。當Azure函數得到編譯時,csx文件的內容被封裝在一個自動創建的類中,這就是爲什麼它抱怨用正則C#方式編寫的擴展方法將嵌套在該自動創建的類中。

當正在瞭解有一個簡單的竅門是在獨立的CSX文件擴展名的方法,仍然讓他們在頂層類中定義:

這裏的run.csx文件

#load "extensions.csx" 

public static void Run(TimerInfo timer, TraceWriter log) 
{ 
    log.Info("test".MyToUpperExtension()); 
} 

和擴展.csx

static string MyToUpperExtension(this string str) 
{ 
    return str.ToUpper(); 
} 

static string MyToLowerExtension(this string str) 
{ 
    return str.ToLower(); 
} 

正如您所見,常規擴展方法之間的唯一區別是您不需要自己將它們包裝在靜態類中。

+0

當我讀到這些時,我說:「如果這樣做,我會吃我的帽子。」然後它工作。謝天謝地,我沒戴帽子。 – Deane

+0

很高興我能幫助解決消化不良問題;) – Slawek

1

你有一個選擇是在一個單獨的c#類中創建你的擴展方法,並將它添加到你的函數中。

docs

如果您需要引用私有程序集,您可以將 彙編文件上傳到bin文件夾相對於你的函數,並使用文件名 引用它(如r組成「 MyAssembly.dll程序「)。有關如何上傳文件到您的文件夾功能 信息,請參閱包管理

的 以下部分。

+0

我不想使用程序集。我只是在'.csx'文件中定義了一個靜態類。我可以包含它,但它不會編譯,因爲類是嵌套的。 – Deane

相關問題