0

I got this error

CS1503 C# Argument 1: cannot convert from 'SerieSettings<SeriesLine>' to 'SerieSettings<ISeries>'

when I pass a SeriesLine type object as parameter, in this way

GraphLibrary().MultiTypeChart(settings => 
{
    settings.AddSeries((SerieSettings<SeriesLine>)(s =>
    {
        s.Name = "Temperatures";
    }));
});

to this method

public class GraphLibrary(){
    public GenericChartExtension MultiTypeChart(Action<GenericChartSettings> settings)
    {
        return new GenericChartExtension(settings);
    }
}

where GenericChartExtension and BaseChartSettings are

public sealed class GenericChartSettings : BaseChartSettings<ISeries>
{
}

public sealed class GenericChartExtension : BaseChartExtension<GenericChartSettings>
{
    public GenericChartExtension(Action<GenericChartSettings> applySettings) : base(applySettings) { }

    public override HtmlString Render()
    {
        return ChartSettings.Settings.Render();
    }
}

derived of BaseChartSettings and BaseChartExtension

public class BaseChartExtension<T>
{
    protected readonly T ChartSettings;

    public BaseChartExtension(Action<T> applySettings)
    {
        ChartSettings = (T) Activator.CreateInstance(typeof (T));
        applySettings(ChartSettings);
    }
//....
public class BaseChartSettings<T> where T : ISeries
{
    public void AddSeries(SerieSettings<T> s) { Settings.AddSeries(s); }

SerieSettings is a delegate

public delegate void SerieSettings<V>(V s);

and SeriesLine is a derived of ISeries

public class SeriesLine: ISeries
davcs86
  • 3,926
  • 2
  • 18
  • 30
  • 3
    https://msdn.microsoft.com/en-us/library/dd799517(v=vs.110).aspx – chengbo Sep 10 '15 at 00:07
  • 1
    There are many, _many_ questions already on Stack Overflow regarding incorrect attempts to use generic types in a variant way. The marked duplicate is one such, but feel free to browse the others. Use keywords like "generic", "variance", "delegate", and "interface". The bottom line is that while `SeriesLine` is an `ISeries`, it does not necessarily follow from that that `SerieSettings` is a `SerieSettings`. – Peter Duniho Sep 10 '15 at 00:27

0 Answers0