我知道如何通过 #load
包含其他 .csx
文件。但是,扩展方法必须在顶级类中定义,并且 #load
嵌套类,因此它不是顶级的,函数会引发编译错误。
如何在不将共享代码嵌套在函数的后编译类中的情况下使用共享代码?
最佳答案
为了正确地包含 Azure Functions 的扩展方法,您可以像在所有其他情况下一样使用#load,关于扩展方法需要在顶级类中的要求的唯一区别是使它们成为顶级方法 :)。当 Azure Function 获取 csx 文件的编译内容被包装在自动创建的类中时,这就是为什么它提示以常规 c# 方式编写的扩展方法将嵌套在该自动创建的类中。
理解了这一点后,有一个简单的技巧可以在单独的 csx 文件中拥有扩展方法,并且仍然在顶级类中定义它们:
这里是run.csx文件
#load "extensions.csx"
public static void Run(TimerInfo timer, TraceWriter log)
{
log.Info("test".MyToUpperExtension());
}
和 extensions.csx
static string MyToUpperExtension(this string str)
{
return str.ToUpper();
}
static string MyToLowerExtension(this string str)
{
return str.ToLower();
}
如您所见,常规扩展方法之间的唯一区别是您不需要自己将它们包装在静态类中。
关于c# - 如何在没有嵌套类的情况下在 Azure Functions 中共享扩展方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42285150/