C# のプログラムで Azure Resource Manager のテンプレート関数が使いたかった。具体的には guid
を。Azure.Deployments.Expression パッケージを使って実現できた。
guid
関数を呼び出して、deterministic な GUID を生成するサンプルは次のとおり。
public static Guid SeededGuid(string src1, string src2, string src3) { var parameters = new FunctionArgument[] { new FunctionArgument(new JValue(src1)), new FunctionArgument(new JValue(src2)), new FunctionArgument(new JValue(src3)), }; var result = ExpressionBuiltInFunctions.Functions .EvaluateFunction( functionName: "guid", parameters: parameters, context: new ExpressionEvaluationContext()) .ToString(); return Guid.Parse(result); }