public BoundInterpolatedStringExpression(InterpolatedStringExpressionSyntax node, string builtStr, BoundExpression[] interpolatedExpressions, BindContext context) : base(node) { ValueType = context.GetTypeSymbol(SpecialType.System_String); BuiltStr = new BoundConstantExpression(new ConstantValue <string>(builtStr), ValueType, node); InterpolationExpressions = interpolatedExpressions; ObjectArr = context.GetTypeSymbol(SpecialType.System_Object).MakeArrayType(context); if (interpolatedExpressions.Length > 3) { StringFormatMethod = ValueType.GetMembers <ExternMethodSymbol>("Format", context).First(e => e.Parameters[0].Type == ValueType && e.Parameters[1].Type == ObjectArr); } else { StringFormatMethod = ValueType.GetMembers <ExternMethodSymbol>("Format", context).First(e => e.Parameters[0].Type == ValueType && e.Parameters.Length == interpolatedExpressions.Length + 1); } }