Получение значений универсального IDictionary использование отражения

Все, что вам нужно, это предоставить вашему load_image.php весь относительный путь. И соответственно измените ваш PHP-скрипт.

HTML

<body>
    <img src="/load_image.php?image=../app/upload_dir/user_img_dir/user1.jpg" width="100" height="100"/>
</body

Для других изображений просто замените значение src тега img. Каждое вхождение тега может обслуживать разные изображения.

9
задан Stefan Steinegger 12 May 2009 в 11:12
поделиться

2 ответа

Было бы лучше вычислить TKey / TValue и переключиться на обычный код с помощью MakeGenericMethod - примерно так:

( edit - вы также можете передать otherInstance в качестве аргумента, если они одного типа)

static class Program
{
    static void Main()
    {
        object obj = new Dictionary<int, string> {
            { 123, "abc" }, { 456, "def" } };

        foreach (Type iType in obj.GetType().GetInterfaces())
        {
            if (iType.IsGenericType && iType.GetGenericTypeDefinition()
                == typeof(IDictionary<,>))
            {
                typeof(Program).GetMethod("ShowContents")
                    .MakeGenericMethod(iType.GetGenericArguments())
                    .Invoke(null, new object[] { obj });
                break;
            }
        }
    }
    public static void ShowContents<TKey, TValue>(
        IDictionary<TKey, TValue> data)
    {
        foreach (var pair in data)
        {
            Console.WriteLine(pair.Key + " = " + pair.Value);
        }
    }    
}
22
ответ дан 4 December 2019 в 07:48
поделиться

Для завершения, даже если решение Марка Грейвелла намного лучше, оно работает так, как я уже начал:

object value = dictType.GetMethod("get_Item")
  .Invoke(instance, new object[] { key });

Это вызывает оператор [] словаря.

6
ответ дан 4 December 2019 в 07:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: