Хорошо, я понял, как это сделать с небольшим количеством unsafe
ness и std::mem
.
Я заменяю self
неинициализированным временным значением. Поскольку я теперь «владею» тем, что раньше было self
, я могу смело вывести его из него и заменить его:
use std::mem;
enum Foo<T> {
Bar(T),
Baz(T),
}
impl<T> Foo<T> {
fn switch(&mut self) {
// This is safe since we will overwrite it without ever reading it.
let tmp = mem::replace(self, unsafe { mem::uninitialized() });
// We absolutely must **never** panic while the uninitialized value is around!
let new = match tmp {
Foo::Bar(val) => Foo::Baz(val),
Foo::Baz(val) => Foo::Bar(val),
};
let uninitialized = mem::replace(self, new);
mem::forget(uninitialized);
}
}
fn main() {}
Можно посмотреть System.Configuration.ConfigurationManager
класс. Строго говоря, OpenMappedExeConfiguration
метод позволит Вам загружать любой .config файл по Вашему выбору. Это даст Вам Configuration
объект, который представляет стандартный AppSettins, ConnectionStrings, свойства SectionGroups и Sections.
Этот подход требует, чтобы Вы передали название файла конфигурации к Вашему сценарию как параметр командной строки или имели логику кода для выбора .config файла во времени выполнения.
я не знаю Python, таким образом, я воздержался бы от попыток отправить пример кода.:-)
Можно всегда включать дополнительные разделы в рамках файлов конфигурации. В Вашем ipy.exe.config файле можно добавить включение для импорта внешних настроек конфигурации; скажите myApp.config.
В пакете/командном файле можно всегда копировать по определенному набору .config в myApp.config и поэтому выполнение с различными файлами конфигурации по требованию.
Посмотрели на этот блог о том, как достигнуть этого; http://weblogs.asp.net/pwilson/archive/2003/04/09/5261.aspx
Переводя это сообщение в блоге в Python, это должно работать:
import clr
import System.AppDomain
System.AppDomain.CurrentDomain.SetData(“APP_CONFIG_FILE”, r”c:\your\app.config”)
] Для обходного пути я заполнил коллекцию AppSettings для статического класса ConfigurationManager "вручную", поэтому я создал PY скрипт и запустил "импорт" его на IronPython, после чего настройки будут доступны для библиотеки классов. Однако, я не смог найти значения для коллекции ConnectionStrings :([
] []мой скрипт выглядит так[
] [import clr
clr.AddReferenceToFileAndPath(r'c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.configuration.dll')
from System.Configuration import *
ConfigurationManager.AppSettings["settingA"] = "setting A value here"
ConfigurationManager.AppSettings["settingB"] = "setting B value here"
]
[]Было бы неплохо знать способ "загрузки" пользовательского .config-файла в класс ConfigurationManager.[
].