Все, что вам нужно, это предоставить вашему 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
. Каждое вхождение тега может обслуживать разные изображения.
Было бы лучше вычислить 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);
}
}
}
Для завершения, даже если решение Марка Грейвелла намного лучше, оно работает так, как я уже начал:
object value = dictType.GetMethod("get_Item")
.Invoke(instance, new object[] { key });
Это вызывает оператор [] словаря.