使用C#方法检查资源参数

时间:2012-10-23 07:04:26

标签: c# .net embedded-resource

我想这看起来有点愚蠢,但我正试图找到一种简单的方法。

我在不同的文件中有一堆SQL脚本,我已将其作为文本文件资源添加到我的.net项目中。我将这些资源字符串中的每一个传递给ExecuteScript方法,该方法在预定义的连接字符串的帮助下获取在数据库中执行的脚本。它是这样的:

ExecuteScript(Resources.Script1);
ExecuteScript(Resources.Script2);
ExecuteScript(Resources.Script3);

private void ExecuteScript(string script)
{
    connectionString = // Get connection string from config file
    // Rest of the code to execute the script.
}

现在当我想为不同的脚本使用不同的连接字符串时出现问题。例如:我想使用connectionString1执行Resources.Script1,使用{1}}的connectionString2。

我如何在Resources.Script2方法中执行此操作?有没有办法在进入方法后找到资源的名称?或者我应该明确定义单独的连接字符串?

2 个答案:

答案 0 :(得分:2)

您可以使用更复杂的类型作为参数。

ExecuteScript(Resources.Script1); 
ExecuteScript(Resources.Script2); 
ExecuteScript(Resources.Script3);  

private void ExecuteScript(ScriptContext scriptContrxt) 
{     
    connectionString = // Get connection string from config file     
    // Rest of the code to execute the script. 
}

使用以下两个属性定义一个新类ScriptContext

public class ScriptContext
{
     // may be create a constructor and make the setter private.
     public string script { get; set; }
     public ConnectionString ConnectionString { get; set; }
}

您可以为每个脚本使用另一个连接字符串。

答案 1 :(得分:0)

除非脚本中包含资源名称或connectionString,否则无法实现此目的 我会选择这样的东西:

ExecuteScript(Resources.Script1, Resources.ConnectionString1);

或者,作为替代方案:

private void ExecuteScript(int index)
{
    var connectionString = Resources.ResourceManager.GetString(string.Format("ConnectionString{0}",index));
    var script = Resources.ResourceManager.GetString(string.Format("Script{0}",index));
// Rest of the code to execute the script.
}