可以使用什么实用程序或模式来解决此问题?我不知道有什么可以帮助解决这个问题。我们可以使用某种类型的模式吗?
如果您有以下抽象类:
abstract class Foo
{
function void Something()
{
// Get the media type
}
}
以及从该类派生的以下类:
class Foo1 : Foo
{
public string MyId {get;set}
public string MyFile {get;set}
public TxtFile MyTextFile {get;set}
function void myFooFunction()
{
// Save File to Txt
}
}
class Foo2 : Foo
{
public string MyId {get;set}
public string MyFile {get;set}
public XMLFile MyXMLFile {get;set}
function MyOtherFunction()
{
// Save to XML
}
}
然后在存储库中的 Linq(或类似)中,您执行以下操作:
var a = (from e in db.myTable
where e.myFileType == "XML"
Select e);
然后我们必须将它映射到正确的对象。像这样:
Foo newFoo = FooFactory.CreateFooFor(a.myFileType.ToString())
newFoo.MyId = a.id;
newFoo.MyFile = a.myfile;
newFoo.MyXMLFile = a.xml;
工厂当然有帮助,但是您如何为多个“文件类型”(例如 txt)执行此操作?字段不匹配!
我是否必须编写更多执行相同操作的代码?我觉得必须有一些东西可以做到这一点。