CS0103 - 当前上下文中不存在名称 'GetListFromCVS'
CS0103 - The name 'GetListFromCVS' does not exist in the current context
一般来说,C# 和面向对象编程还很陌生。我目前在尝试调用位于另一个“.cs”文件但位于同一命名空间中的 GetListFromCSV 方法时收到此错误。我不确定为什么我无法调用此方法?
我最初在 main 中的 GetListFromCSV 方法中有代码,但想将它放在它自己的 class 文件中以实践 SOLID 原则。也许在这种情况下没有意义?
如有任何帮助,我们将不胜感激。
谢谢!
主要:
using MathNet.Numerics;
using System.Collections.Generic;
namespace SimPump_Demo
{
class Program
{
static void Main(string[] args)
{
// Get CSV file location
string dirCSVLocation = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
string fileCSVLocation = dirCSVLocation + @"\PumpCurveCSVFiles\pumpcurve.csv";
// Read CSV contents into variable "records"
//CSVToList CSVIsntance = new CSVToList();
List<PumpCurveCSVInput> records = GetListFromCVS(fileCSVLocation);
//float pumpFlowOutput;
double[] pumpFlow = new double[records.Count];
double[] pumpHead = new double[records.Count];
int i = 0;
foreach (var record in records)
{
//if (record.pumpHead == 50)
//{
// pumpFlowOutput = record.pumpFlow;
//}
pumpFlow[i] = record.pumpFlow;
pumpHead[i] = record.pumpHead;
i++;
}
// Determine pump curve
Polynomial.Fit(pumpFlow, pumpHead, 3);
}
}
}
GetListFromCSV 方法:
using CsvHelper;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
namespace SimPump_Demo
{
public class CSVToList
{
public static List<PumpCurveCSVInput> GetListFromCVS(string fileCSV)
{
List<PumpCurveCSVInput> records;
using (var reader = new StreamReader(fileCSV))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
records = csv.GetRecords<PumpCurveCSVInput>().ToList();
}
return records;
}
}
}
尽管GetListFromCVS
是一个静态方法,它仍然属于CSVToList
class。因此你必须这样称呼它:
List<PumpCurveCSVInput> records = CSVToList.GetListFromCVS(fileCSVLocation);
只需使用 class 的名称,无需创建实例。
如果你的方法是非静态的
public class CSVToList
{
public List<PumpCurveCSVInput> GetListFromCVS(string fileCSV)
{
// Your code
}
}
在那种情况下,您应该先创建 CSVToList
class 的实例,然后才能使用此方法
var csvHelper = new CSVToList();
List<PumpCurveCSVInput> records = csvHelper.GetListFromCVS(fileCSVLocation);
一般来说,C# 和面向对象编程还很陌生。我目前在尝试调用位于另一个“.cs”文件但位于同一命名空间中的 GetListFromCSV 方法时收到此错误。我不确定为什么我无法调用此方法?
我最初在 main 中的 GetListFromCSV 方法中有代码,但想将它放在它自己的 class 文件中以实践 SOLID 原则。也许在这种情况下没有意义?
如有任何帮助,我们将不胜感激。
谢谢!
主要:
using MathNet.Numerics;
using System.Collections.Generic;
namespace SimPump_Demo
{
class Program
{
static void Main(string[] args)
{
// Get CSV file location
string dirCSVLocation = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
string fileCSVLocation = dirCSVLocation + @"\PumpCurveCSVFiles\pumpcurve.csv";
// Read CSV contents into variable "records"
//CSVToList CSVIsntance = new CSVToList();
List<PumpCurveCSVInput> records = GetListFromCVS(fileCSVLocation);
//float pumpFlowOutput;
double[] pumpFlow = new double[records.Count];
double[] pumpHead = new double[records.Count];
int i = 0;
foreach (var record in records)
{
//if (record.pumpHead == 50)
//{
// pumpFlowOutput = record.pumpFlow;
//}
pumpFlow[i] = record.pumpFlow;
pumpHead[i] = record.pumpHead;
i++;
}
// Determine pump curve
Polynomial.Fit(pumpFlow, pumpHead, 3);
}
}
}
GetListFromCSV 方法:
using CsvHelper;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
namespace SimPump_Demo
{
public class CSVToList
{
public static List<PumpCurveCSVInput> GetListFromCVS(string fileCSV)
{
List<PumpCurveCSVInput> records;
using (var reader = new StreamReader(fileCSV))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
records = csv.GetRecords<PumpCurveCSVInput>().ToList();
}
return records;
}
}
}
尽管GetListFromCVS
是一个静态方法,它仍然属于CSVToList
class。因此你必须这样称呼它:
List<PumpCurveCSVInput> records = CSVToList.GetListFromCVS(fileCSVLocation);
只需使用 class 的名称,无需创建实例。
如果你的方法是非静态的
public class CSVToList
{
public List<PumpCurveCSVInput> GetListFromCVS(string fileCSV)
{
// Your code
}
}
在那种情况下,您应该先创建 CSVToList
class 的实例,然后才能使用此方法
var csvHelper = new CSVToList();
List<PumpCurveCSVInput> records = csvHelper.GetListFromCVS(fileCSVLocation);