【发布时间】:2018-05-20 23:09:45
【问题描述】:
我不知道这是否可能,但感觉应该是从使用 C# 到现在。
我想要一堆包含“设置值”的静态类,供库的用户作为参数发送到另一个类。
所以这就是我要去的地方,但我无法弄清楚。下面这只是我的想法的一个例子,所以不要试图找出“为什么”:-)
First - 将被调用的类
public class myClass
{
public bool isError { private set; get; }
public DataTable output { private set; get; }
public String filename { set; private get; }
public settingModule settings { set; private get; }
public static void execute()
{
//Call Private 'getTheData'
//set isError accordingly
//Load output
}
private static DataTable getTheData()
{
//Open and read file for 'fileName'
//Use settings.startingRow
//Use settings.fileType
//User settings.skipEmpty
//Do some stuff
return Datatable from workings
}
}
Second - 我希望用户通过的课程
public static class settingMobule
{
public static class fileTypeA
{
public static int startingRow = 1;
public static String fileType = "txt";
public static bool skipEmpty = true;
}
public static class fileTypeB
{
public static int startingRow = 10;
public static String fileType = "csv";
public static bool skipEmpty = false;
}
public static class fileTypeC
{
public static int startingRow = 3;
public static String fileType = "hex";
public static bool skipEmpty = true;
}
}
最后是我想要的称呼方式
myClass test = new myClass();
test.filename = "c:\\temp\\test.txt;
test.settings = settingModule.fileTypeA;
test.execute();
if(test.isError == false
{
DataTable myTable = test.output;
test.dispose()
}
在此先感谢...是的,“你的疯子有更好的方法”是一个完全有效的答案:-)
我也很想知道如何将 .dispose() 添加到我的代码中,这不是我必须要做的事情,但是当我在这里时... :-D
【问题讨论】:
-
参数必须是实例。静态类没有实例。
-
所有这些静态类和值基本上是一个巨大的code smell,你没有构建一个好的面向对象程序。从外观上看,
fileTypeA、fileTypeB和fileTypeC应该是派生自同一个类的实例化类。
标签: c# class parameter-passing