Skip to content

Instantly share code, notes, and snippets.

@mrtank
Created December 14, 2018 11:04
Show Gist options
  • Save mrtank/db166b997f84d7bc053505c21dca12d8 to your computer and use it in GitHub Desktop.
Save mrtank/db166b997f84d7bc053505c21dca12d8 to your computer and use it in GitHub Desktop.
private void SetConfigFile(Dictionary<string, string> configParams, string sid)
{
Configuration cfg = WebConfigurationManager.OpenWebConfiguration("/");
var destinationConfigurationSection = cfg.GetSection("SAP.Middleware.Connector/ClientSettings/DestinationConfiguration");
var destinationConfigurationType = typeof(RfcDestination).Assembly.GetType("SAP.Middleware.Connector.RfcDestinationConfiguration");
var destinationCollectionType = typeof(RfcDestination).Assembly.GetType("SAP.Middleware.Connector.RfcDestinationCollection");
var destinationParametersType =
typeof(RfcDestination).Assembly.GetType("SAP.Middleware.Connector.RfcDestinationParameters");
BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Static;
PropertyInfo destinationsProperty = destinationConfigurationType.GetProperty("Destinations", bindFlags);
var destinations = destinationsProperty.GetValue(destinationConfigurationSection);
MethodInfo addMethod = destinationCollectionType.GetMethod("Add", bindFlags, null, new[] { typeof(ConfigurationElement) }, null);
object destinationParameters =
Activator.CreateInstance(destinationParametersType, sid);
foreach (var configParam in configParams)
{
PropertyInfo clientProperty = destinationParametersType.GetProperty(configParam.Key, bindFlags);
clientProperty.SetValue(destinationParameters, configParam.Value);
}
addMethod.Invoke(destinations, new[] {destinationParameters});
cfg.Save(ConfigurationSaveMode.Modified);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment