这里是新海报,但已经使用SO很长时间了。
我对C#编码有点不满意,我想对自己的代码进行优化。我有2种方法具有完全相同的代码,但对象不同(该对象具有一些不同的属性,但是两种方法中使用的属性相同)。在调用该方法之前,查询的构建方式有所不同。有没有一种方法可以轻松地组合这些方法,以便我仍然可以将其与一个或另一个对象一起使用?
private static void SetQueryMainFilters(DocumentQueryObject documentQuery,DocumentQuery repeaterQuery,out DocumentQuery outRepeaterQuery)
{
if (documentQuery.NodeID > 0)
{
repeaterQuery.WhereEquals(KenticoConstants.NODE_ID,documentQuery.NodeID);
}
if (documentQuery.DocumentID > 0)
{
repeaterQuery.WhereEquals(KenticoConstants.DOCUMENT_ID,documentQuery.DocumentID);
}
outRepeaterQuery = repeaterQuery;
}
private static void SetQueryMainFilters(DocumentQueryObject documentQuery,MultiDocumentQuery repeaterQuery,out MultiDocumentQuery outRepeaterQuery)
{
if (documentQuery.NodeID > 0)
{
repeaterQuery.WhereEquals(KenticoConstants.NODE_ID,documentQuery.DocumentID);
}
outRepeaterQuery = repeaterQuery;
}
调用重复方法的方法之一
public static MultiDocumentQuery RepeaterMultiDocumentQuery(DocumentQueryObject documentQuery)
{
MultiDocumentQuery repeaterQuery = new MultiDocumentQuery();
[...]
SetQueryMainFilters(documentQuery,repeaterQuery,out repeaterQuery);
return repeaterQuery;
}
当前,我有一个MultiDocumentQuery对象和一个DocumentQueryObject。两种方法的代码相同,但是对象不同。
是否有适当的方法可以避免代码重复?如果您有更好的解决方案可以提供给我,我会征询您的意见。我需要能够调用具有几乎相同的属性但行为不同的多重查询构建器或常规查询构建器。它使用Kentico的DocumentQuery和MultiDocumentQuery。
谢谢!