我有一个类,你在一个文件夹中传递,然后它关闭并处理指定文件夹中的大量数据.
例如:
MyClass myClass = new MyClass(@"C:\temp");
Run Code Online (Sandbox Code Playgroud)
现在它开始了,读取说几千个文件并用数据填充该类.
我应该从构造函数中移出这些数据并将其作为单独的方法,如下所示吗?
MyClass myClass = new MyClass();
myClass.LoadFromDirectory(@"C:\temp");
Run Code Online (Sandbox Code Playgroud)
Tom*_*son 22
也许您应该使用返回对象实例的静态方法来尝试这种方式.
var myClass = MyClass.LoadFromDirectory(@"C:\temp");
Run Code Online (Sandbox Code Playgroud)
这将使初始化代码保持在构造函数之外,并为您提供您正在寻找的"一行"声明.
从海报中继续下面的评论,通过添加State实现可能是这样的:
public class MyClass
{
#region Constructors
public MyClass(string directory)
{
this.Directory = directory;
}
#endregion
#region Properties
public MyClassState State {get;private set;}
private string _directory;
public string Directory
{
get { return _directory;}
private set
{
_directory = value;
if (string.IsNullOrEmpty(value))
this.State = MyClassState.Unknown;
else
this.State = MyClassState.Initialized;
}
}
#endregion
public void LoadFromDirectory()
{
if (this.State != MyClassState.Initialized || this.State != MyClassState.Loaded)
throw new InvalidStateException();
// Do loading
this.State = MyClassState.Loaded;
}
}
public class InvalidStateException : Exception {}
public enum MyClassState
{
Unknown,
Initialized,
Loaded
}
Run Code Online (Sandbox Code Playgroud)
这取决于.您应该评估该课程的基本目的.它的功能是什么?
我通常喜欢的是让类构造函数执行类的运行所需的初始化.然后我调用类上的方法,可以安全地假设已经完成了必要的初始化.
通常,初始化阶段不应过于密集.执行上述操作的另一种方法可能是:
// Instantiate the class and get ready to load data from files.
MyClass myClass = new MyClass(@"C:\temp");
// Parse the file collection and load necessary data.
myClass.PopulateData();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2269 次 |
最近记录: |