目前,我有两个这样的功能
GenerateDocumentA(DocumentA docA)
{
OpenDocumentCode();
for (int i = 0; i < pageCount; i ++)
{
// some common per page code, var page = xxx
SpecificCodeA(docA, page, i);
}
CloseDocumentCode();
}
GenerateDocumentB(DocumentB docB)
{
OpenDocumentCode();
for (int i = 0; i < pageCount; i ++)
{
// some common per page code, var page = xxx
SpecificCodeB(docB, page, i);
}
CloseDocumentCode();
}我试着去复制代码,看到了这个答案。
并且面临一个我不知道如何将变量从两个地方传递到SpecificCode()的问题。
GenerateDocument(Action SpecificCode)
{
OpenDocumentCode();
for (int i = 0; i < pageCount; i ++)
{
// some common per page code, var page = xxx
SpecificCode(); // How to pass the current page / page index
}
CloseDocumentCode();
}
GenerateDocumentA(DocumentA docA)
{
GenerateDocument( () => { } ) // how to also pass the DocumentA docA
}我的问题是:如何定义SpecificCode()并将其传递给GenerateDocument()公共代码,因为知道SpecificCode()将GenerateDocumentA()和GenerateDocument()中的变量作为参数。
发布于 2022-11-11 09:34:45
GenerateDocument(Action<int,int> todo)
{
OpenDocumentCode();
for (int i = 0; i < pageCount; i ++)
{
// some common per page code, var page = xxx
todo(page,i);
}
CloseDocumentCode();
}用例:
DocumentA docA;
GenerateDocument((int page, int i)=>
{
SpecificCodeA(docA, page, i);
});
DocumentB docB;
GenerateDocument((int page, int i)=>
{
SpecificCodeB(docB, page, i);
});https://stackoverflow.com/questions/74400382
复制相似问题