决定是否将参数传递给 using 语句中的方法
Deciding whether or not to pass an argument to a method in a using statement
我使用 Neo4J .NET 驱动程序从 Neo4J 数据库中获取一些数据。我需要在 using
块中创建一个会话,但是,如果我正在处理特定版本的数据库,我还需要将一个参数传递给 using
块中的方法。这是没有参数的代码:
using (var conn = GraphDatabase.Driver(connectionString, AuthTokens.Basic(user, pass)).Session())
{
// ...some logic...
}
并带有参数:
using (var conn = GraphDatabase.Driver(connectionString, AuthTokens.Basic(user, pass)).Session(SessionConfigBuilder.ForDatabase(db)))
{
// ...some logic...
}
我需要根据作为参数传递的版本调用方法中提到的 using
块之一。我想知道如何解决这个问题?创建一个 returns 会话的自定义对象,将逻辑放在私有方法中,并创建两个 ifs,每个 ifs 中的任何一个 using
?
无需创建两个 using
块。根据 the source,不接受任何参数的 .Session()
重载仅调用传递给它的 null
的另一个重载。你可以简单地做同样的事情。
创建一个Action<SessionConfigBuilder>
类型的对象,其值由版本决定,然后将其传递给.Session()
方法。它应该类似于以下内容:
var action = specificVersion ? SessionConfigBuilder.ForDatabase(db) : null;
using (var conn = GraphDatabase.Driver(connectionString, AuthTokens.Basic(user, pass))
.Session(action))
{
}
我使用 Neo4J .NET 驱动程序从 Neo4J 数据库中获取一些数据。我需要在 using
块中创建一个会话,但是,如果我正在处理特定版本的数据库,我还需要将一个参数传递给 using
块中的方法。这是没有参数的代码:
using (var conn = GraphDatabase.Driver(connectionString, AuthTokens.Basic(user, pass)).Session())
{
// ...some logic...
}
并带有参数:
using (var conn = GraphDatabase.Driver(connectionString, AuthTokens.Basic(user, pass)).Session(SessionConfigBuilder.ForDatabase(db)))
{
// ...some logic...
}
我需要根据作为参数传递的版本调用方法中提到的 using
块之一。我想知道如何解决这个问题?创建一个 returns 会话的自定义对象,将逻辑放在私有方法中,并创建两个 ifs,每个 ifs 中的任何一个 using
?
无需创建两个 using
块。根据 the source,不接受任何参数的 .Session()
重载仅调用传递给它的 null
的另一个重载。你可以简单地做同样的事情。
创建一个Action<SessionConfigBuilder>
类型的对象,其值由版本决定,然后将其传递给.Session()
方法。它应该类似于以下内容:
var action = specificVersion ? SessionConfigBuilder.ForDatabase(db) : null;
using (var conn = GraphDatabase.Driver(connectionString, AuthTokens.Basic(user, pass))
.Session(action))
{
}