How can I create a public static method while implementing an interface in c#? : <p>I have the following interface</p>

<pre><code>public interface IQueryBuilder
{
    SqlCommand Build(IReportDataSource dataSource, List&lt;IReportColumn&gt; columns, List&lt;IReportRelationMapping&gt; relationMappings, IReportFilterMapping filters, List&lt;IReportColumn&gt; columsToSortBy, ReportFormat reportFormat);

    string GetSqlClause(List&lt;IReportFilter&gt; reportFilters, ref List&lt;IDataParameter&gt; sqlParams);
}
</code></pre>

<p>However, I would like to be able to access the method <code>GetSqlClause</code> in the implementation directly.</p>

<p>Here is how I implemented the above </p>

<pre><code>public class QueryBuilder : IQueryBuilder
{
    public SqlCommand Build(IReportDataSource dataSource, List&lt;IReportColumn&gt; columns, List&lt;IReportRelationMapping&gt; relationMappings, IReportFilterMapping filters, List&lt;IReportColumn&gt; columsToSortBy, ReportFormat reportType)
    {
        //Do something awsome!!!
        string sqlQuery = "";

        List&lt;IDataParameter&gt; sqlParameters = new List&lt;IDataParameter&gt;();

        return this.GetSqlCommand(sqlQuery, sqlParameters);
    }

    private SqlCommand GetSqlCommand(string sqlQuery, List&lt;IDataParameter&gt; sqlParams)
    {
        var command = new SqlCommand(sqlQuery);

        foreach (IDataParameter dataParameter in sqlParams)
        {
            command.Parameters.Add(dataParameter);
        }

        return command;
    }


    public static string GetSqlClause(List&lt;IReportFilter&gt; reportFilters, ref List&lt;IDataParameter&gt; sqlParams)
    {
        string sqlFilter = "";

        if (reportFilters != null &amp;&amp; reportFilters.Any())
        {
            //At this point we know there are some filter to add to the list

            var firstFilter = reportFilters.First();

            foreach (var reportFilter in reportFilters)
            {

                var parameter = GenerateDbParameter("p" + sqlParams.Count, reportFilter.FormattedValue, SqlDbType.NVarChar);
                ....
                ....
            }
        }

        return sqlFilter;
    }

    private static IDataParameter GenerateDbParameter(string parameterName, object parameterValue, SqlDbType parameterType)
    {
        if (string.IsNullOrEmpty(parameterName) || parameterValue == null)
        {
            throw new ArgumentException();
        }
        var parameter = new SqlParameter("@" + parameterName, parameterType)
        {
            Value = parameterValue
        };

        return parameter;
    }


}
</code></pre>

<p>Because I am using <code>static</code> on my <code>GetSqlClause</code> method I get an error</p>

<blockquote>
  <p>cannot implement an interface member because it is static.</p>
</blockquote>

<p>What is a good work around to this problem? How can I access my <code>GetSqlClause</code> directly?</p>
