После Вызов неопределенной функции __ () ошибка - phpMyAdmin
В зависимости от вашей ОС вы пробовали:
(CentOS)
sudo yum install php-mbstring
[ 1116] (Debian)
sudo apt-get install php7.0-mbstring
А затем перезапустите процесс Apache.
Проверьте требования phpMyAdmin
blockquote>
- Вам необходим PHP 7.1.0 или более поздней версии, с поддержкой сеансов, расширением Standard PHP Library (SPL), hash, ctype и поддержка JSON.
- Расширение mbstring (см. Mbstring) настоятельно рекомендуется по соображениям производительности.
- Для поддержки загрузки ZIP-файлов вам нужно расширение PHP zip.
- Вам нужна поддержка GD2 в PHP для отображения встроенных миниатюр JPEG («image / jpeg: inline») с их исходным соотношением сторон.
- При использовании аутентификации cookie (по умолчанию) настоятельно рекомендуется расширение openssl.
- Для поддержки индикаторов выполнения загрузки см. 2.9 Просмотр индикатора выполнения загрузки.
- Для поддержки импорта XML и электронных таблиц Open Document требуется расширение libxml.
- Для поддержки reCAPTCHA на странице входа в систему вам потребуется расширение openssl.
- Чтобы поддерживать отображение последней версии phpMyAdmin, вам нужно включить allow_url_open в вашем php.ini или иметь расширение curl.
Это должно быть что-то как следующее. Я записал это в поле ответа, таким образом, синтаксис не может быть точно правильным, но я сделал это Wiki доступный для редактирования, таким образом, кто-либо может договориться.
if (listBox.ItemsSource.IsGenericType &&
typeof(IDictionary<,>).IsAssignableFrom(listBox.ItemsSource.GetGenericTypeDefinition()))
{
var method = typeof(KeyValuePair<,>).GetProperty("Value").GetGetMethod();
var item = method.Invoke(listBox.SelectedItem, null);
}
Я полагаю, что предупреждение в месте.
, Когда Вы тестируете, если объект 'является' чем-то это или что, Вы повторно реализуете (часть) систему типов. Первое '', часто быстро сопровождается вторым, и скоро Ваш код полон проверок типа, которые должны быть очень хорошо обработаны системой типов - по крайней мере, в объектно-ориентированном проектировании.
, Конечно, я не знаю ничего из контекста вопроса. Я действительно знаю файл строки 2000 года в нашей собственной кодовой базе, которая обрабатывает 50 других объектов к Преобразованиям строк... :(
Вы могли быть немного более универсальными и спросить вместо этого, если это реализует IDictionary
. Затем набор KeyValue будет плоскость буфета Objects
.
можно проверить, чтобы видеть, реализует ли это IDictionary. Необходимо будет просто перечислить по использованию класс DictionaryEntry .
Проверьте, чтобы видеть, реализует ли это IDictionary.
См. определение Системы. Наборы. IDictionary для наблюдения то, что это дает Вам.
if (listBox.ItemsSource is IDictionary)
{
DictionaryEntry pair = (DictionaryEntry)listBox.SelectedItem;
object value = pair.Value;
}
РЕДАКТИРОВАНИЕ: Альтернатива, когда я понял KeyValuePair, не castable к DictionaryEntry
if (listBox.DataSource is IDictionary)
{
listBox.ValueMember = "Value";
object value = listBox.SelectedValue;
listBox.ValueMember = ""; //If you need it to generally be empty.
}
, Это решение использует отражение, но в этом случае Вы не должны делать трудной работы, ListBox делает это для Вас. Также, если у Вас обычно есть словари как источники данных, Вы можете избегать reseting ValueMember все время.
if(typeof(IDictionary).IsAssignableFrom(listBox.ItemsSource.GetType()))
{
}