Взгляните на Assembly.GetTypes()
метод. Это возвращает все типы, которые могут быть найдены в блоке. Все, что необходимо сделать, должно выполнить итерации через каждый возвращенный тип и проверку, если это реализует необходимый интерфейс.
На способа сделать так использует Type.IsAssignableFrom
метод.
Вот пример. myInterface
интерфейс, реализации которого Вы ищете.
Assembly myAssembly;
Type myInterface;
foreach (Type type in myAssembly.GetTypes())
{
if (myInterface.IsAssignableFrom(type))
Console.WriteLine(type.FullName);
}
я полагаю, что это не очень эффективный способ решить Вашу проблему, но по крайней мере, это - хорошее место для запуска.
Вы можете использовать session_regenerate_id ()
:
Php session_start (); $ old_sessionid = идентификатор_сеанса (); session_regenerate_id (); $ new_sessionid = идентификатор_сеанса (); echo "Старая сессия: $ old_sessionid
"; echo "Новая сессия: $ new_sessionid
"; print_r ($ _ СЕССИЯ); ?>
или даже более грубый подход может сработать:
// save the session
session_start();
$session = array();
foreach ($_SESSION as $k => $v) {
$session[$k] = $v;
}
session_commit();
// create new session and copy variables
session_id("new session id");
session_start();
foreach ($session as $k => $v) {
$_SESSION[$k] = $v;
}
Или вы можете просто использовать что-то вроде этого:
$path=session_save_path();
$whatever_session_id;
передайте эти переменные на следующую страницу:
session_id()=$whatever_session_id;
session_save_path()=$path;
Вы должны установить путь для нового идентификатора сеанса на старые данные сеанса .... Я не знаю, действительно ли это то, что вам нужно, будь здесь.