对于如果选择单机版模式,那么我们需要设置相应的参数,用来告诉混合式框架采用本地数据库模式,具体代码如下所示。
/// <summary>
/// 单机版模式的复选框事件处理
/// </summary>
private void chkLocalVersion_CheckedChanged(object sender, EventArgs e)
{
SetAccessType(this.chkLocalVersion.Checked);
}
/// <summary>
/// 设置为网络方式还是单机版模式
/// </summary>
/// <param name="localType">是否为单机版模式</param>
private void SetAccessType(bool localType)
{
this.lblNetType.Enabled = !localType;
this.radNetType.Enabled = !localType;
AppConfig config = new AppConfig();
config.AppConfigSet("CallerType", localType ? "win" : "wcf");
ConfigurationManager.RefreshSection("appSettings");
}
  如果是网络方式,还需要区分内网模式,还是外网模式,根据参数来对相关的配置文件进行修改,具体逻辑代码如下所示。
/// <summary>
/// 网络方式(内网、外网)切换处理事件
/// </summary>
private void radNetType_SelectedIndexChanged(object sender, EventArgs e)
{
ChangeConfig();
}
/// <summary>
/// 修改配置文件
/// </summary>
private void ChangeConfig()
{
if (parameter != null)
{
bool isIntranet = radNetType.EditValue.ToString() == "内网";
if (isIntranet)
{
UpdateConfig(parameter.InternalWcfHost, parameter.InternalWcfPort);
}
else
{
UpdateConfig(parameter.ExternalWcfHost, parameter.ExternalWcfPort);
}
}
else
{
MessageDxUtil.ShowError("获取参数信息失败");
}
}
/// <summary>
/// WCF模式下,修改配置文件中的主机地址信息和端口
/// </summary>
/// <param name="serverIPAddress">主机地址信息</param>
/// <param name="serverPort">端口</param>
private void UpdateConfig(string serverIPAddress, int serverPort)
{
string basePath = System.Environment.CurrentDirectory;
UpdateConfigFile(serverIPAddress, serverPort, Path.Combine(basePath, "BaseWcfConfig.config"));
UpdateConfigFile(serverIPAddress, serverPort, Path.Combine(basePath, "WcfConfig.config"));
}
/// <summary>
/// 通过正则标识方式替换其中的主机信息和端口参数
/// </summary>
/// <param name="serverIPAddress">主机地址信息</param>
/// <param name="serverPort">端口</param>
/// <param name="exeFilePath">配置文件地址</param>
private void UpdateConfigFile(string serverIPAddress, int serverPort, string exeFilePath)
{
string address = File.ReadAllText(exeFilePath, System.Text.Encoding.UTF8);
string pattern = "://.*?/";
string replacement = string.Format("://{0}:{1}/", serverIPAddress, serverPort);
address = Regex.Replace(address, pattern, replacement);
File.WriteAllText(exeFilePath, address, System.Text.Encoding.UTF8);
}
  以上是我对于混合式开发框架的登陆方式和登陆参数进行的配置信息管理的一个案例,希望对大家有帮助。