我在使用LinqToSQL和多层的ASP.Net MVC项目。用户可以上传文件,基本上是Excel和Access文件,我的服务层将完成所有的验证和其他内容。关于实例化抽象类的子类的疑问
我在考虑实现名为“UploadManager”的抽象类和2个子类“UploadExcel”和“UploadAccess”。一些方法对于两个类都是通用的,例如“SaveFile”和“DeleteFile”。但是,其他一些方法将仅限于特定的子类,例如仅属于“UploadExcel”类的“ValidateWorksheet”。
我设计是这样的:
public abstract class UploadManager
{
protected void SaveFile(string fileName)
{
//Implement
}
protected void DeleteFile(string fileName)
{
//Implement
}
}
public class UploadExcel : UploadManager
{
private bool ValidateWorksheet()
{
//Implement
}
}
public class UploadAccess : UploadManager
{
private bool ValidateSomethingAboutAccess()
{
//Implement
}
}
我想使用的接口了。但是,我主要的疑问是我怎么知道我必须实例化哪个子类?如果上传的文件是Excel文件,则为“new UploadExcel()
”,如果是Access文件,则为“new UploadAccess()
”。
有没有办法做到这一点?有没有更好的办法?我有点不知所措...
在此先感谢!
但是我怎么知道我是否必须做一个新的UploadExcel()或一个新的UploadAccess()? – AndreMiranda
并假设我有一个关于Excel的具体方法?它将被限制在它的类别中... – AndreMiranda
@Andre:会为你留下一些逻辑(if/else)。继承只能处理(可以做成)符合相同形状的事物。 –