How to correct warning CS1707?
<pre><code>using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.Collections;
using System.ComponentModel;

namespace ConsoleApplication1
{
    class BreakingChange
    {
        delegate void SampleDelegate(string x);

        public void CandidateAction(string x)
        {
            Console.WriteLine("Snippet.CandidateAction");
        }

        public class Derived : BreakingChange
        {
            public void CandidateAction(object o)
            {
                Console.WriteLine("Derived.CandidateAction");
            }
        }

        static void Main()
        {
            Derived x = new Derived();
            SampleDelegate factory = new SampleDelegate(x.CandidateAction);
            factory("test");
        }
    }
}
</code></pre>

<blockquote>
  <p>\Program.cs(32,38): warning CS1707: Delegate 'ConsoleApplication1.BreakingChange.SampleDelegate' bound to 'ConsoleApplication1.BreakingChange.Derived.CandidateAction(object)' instead of 'ConsoleApplication1.BreakingChange.CandidateAction(string)' because of new language rules
  \Program.cs(23,25): (Related location)
  \Program.cs(16,21): (Related location)</p>
</blockquote>

<p><strong>Question:</strong> 
I know what causes this warning and know the reason behind it. However, I don't know what the
best way to fix it?</p>

<p>1> Redefine the function (i.e.) change the function signature</p>

<p>2> Can we explicitly call BreakingChange.CandidateAction in the following line?</p>

<pre><code>SampleDelegate factory = new SampleDelegate(x.CandidateAction);
</code></pre>
