Wie kann ein Klassenparameter sowohl für die Klasse benötigt als auch nicht definiert werden?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Wie kann ein Klassenparameter sowohl für die Klasse benötigt als auch nicht definiert werden?

Post by Anonymous »

Wenn ich versuche, diese Variable zu instanziieren, wird mir gesagt, dass mir der erforderliche Parameter "xaxis" fehlt. Wenn ich jedoch versuche, "xaxis" zu definieren, wird mir gesagt, dass die Klasse keine Definition für "xaxis" enthält.

Code: Select all

    var rule = new ScottPlot.AxisRules.MaximumBoundary
{
xAxis = thisPlot.Axes.Left,
yAxis = thisPlot.Axes.Bottom,
Limits = new AxisLimits(thisPlot.Axes.GetDataLimits().Left * 0.05, thisPlot.Axes.GetDataLimits().Right * 0.05, 0, 100)

};
< /code>
Dies sind die 2 Warnungen, die ich bekomme: < /p>
There is no argument given that corresponds to the required parameter

Code: Select all

'type' does not contain a definition for 'identifier'

Und hier ist die vollständige Klassendefinition:
namespace ScottPlot.AxisRules;

public class MaximumBoundary(IXAxis xAxis, IYAxis yAxis, AxisLimits limits) : IAxisRule
{
readonly IXAxis XAxis = xAxis;
readonly IYAxis YAxis = yAxis;
public AxisLimits Limits { get; set; } = limits;

public void Apply(RenderPack rp, bool beforeLayout)
{
double horizontalSpan = Math.Min(Math.Abs(XAxis.Range.Span), Limits.XRange.Span);
double verticalSpan = Math.Min(Math.Abs(YAxis.Range.Span), Limits.YRange.Span);

if (XAxis.IsInverted())
{
if (XAxis.Range.Min > Limits.XRange.Max)
{
XAxis.Range.Min = Limits.XRange.Max;
XAxis.Range.Max = Limits.XRange.Max - horizontalSpan;
}

if (XAxis.Range.Max < Limits.XRange.Min)
{
XAxis.Range.Max = Limits.XRange.Min;
XAxis.Range.Min = Limits.XRange.Min + horizontalSpan;
}
}
else
{
if (XAxis.Range.Max > Limits.XRange.Max)
{
XAxis.Range.Max = Limits.XRange.Max;
XAxis.Range.Min = Limits.XRange.Max - horizontalSpan;
}

if (XAxis.Range.Min < Limits.XRange.Min)
{
XAxis.Range.Min = Limits.XRange.Min;
XAxis.Range.Max = Limits.XRange.Min + horizontalSpan;
}
}

if (YAxis.IsInverted())
{
if (YAxis.Range.Min > Limits.YRange.Max)
{
YAxis.Range.Min = Limits.YRange.Max;
YAxis.Range.Max = Limits.YRange.Max - verticalSpan;
}

if (YAxis.Range.Max < Limits.YRange.Min)
{
YAxis.Range.Max = Limits.YRange.Min;
YAxis.Range.Min = Limits.YRange.Min + verticalSpan;
}
}
else
{
if (YAxis.Range.Max > Limits.YRange.Max)
{
YAxis.Range.Max = Limits.YRange.Max;
YAxis.Range.Min = Limits.YRange.Max - verticalSpan;
}

if (YAxis.Range.Min < Limits.YRange.Min)
{
YAxis.Range.Min = Limits.YRange.Min;
YAxis.Range.Max = Limits.YRange.Min + verticalSpan;
}
}
}
}
< /code>
Ich habe bemerkt, dass ich mit der Nachricht "Feature 'Readonly -Mitglieder' nicht in C# 7.3 verfügbar ist, wenn ich versuche, eine eigene Klasse mit einer" Readonly "-Obmeldung zu erstellen. Bitte verwenden Sie Sprachversion 8.0 oder größer" < /p>
Ist es möglich, dass die Readonly -Eigenschaften aufgrund der My -C -# -Version nicht erkennen. Ich möchte mein Zielframework nicht ändern oder meine ScottPlot -Version nicht herabstufen. Gibt es eine Möglichkeit, dies zum Laufen zu bringen?>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post