Чтобы отключить определенный маршрут для Razor Page
, вы можете попробовать IAsyncPageFilter
.
public class DisableIdentityAsyncPageFilter : IAsyncPageFilter
{
public DisableIdentityAsyncPageFilter()
{
}
public async Task OnPageHandlerSelectionAsync(
PageHandlerSelectedContext context)
{
await Task.CompletedTask;
}
public async Task OnPageHandlerExecutionAsync(
PageHandlerExecutingContext context,
PageHandlerExecutionDelegate next)
{
if (context.HttpContext.Request.Path.StartsWithSegments("/Identity") &&
!context.HttpContext.Request.Path.StartsWithSegments("/Identity/Account/Login"))
{
context.Result = new StatusCodeResult(404);
}
else
{
await next.Invoke();
}
}
}
А затем настройте в Startup.cs
services.AddMvc(options => {
options.Filters.Add(typeof(DisableIdentityAsyncPageFilter));
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
Все в AS3 - ссылка кроме [u] ints. Сделать вывод, все, что наследовалось Object
будет дан функции ссылкой.
Однако единственный способ, которым я верю Вам, может сделать это, использование контейнерный класс как Array
или a String
("5" и делают conversion+math).
Заключение в кавычки погугленного источника:
В ActionScript 3.0 все аргументы передаются ссылкой, потому что все значения хранятся как объекты. Однако объекты, которые принадлежат примитивным типам данных, который включает булевскую переменную, Число, интервал, uint, и Строку, имеют специальные операторы, которые заставляют их вести себя, как будто они были переданы значением.
Который привел меня искать канонический источник.
Кажется, что Строки, ints, единицы, булевские переменные передаются Значением. Я попробовал этот небольшой отрывок в Flash, и результаты были отрицательны:
function func(a:String){
a="newVal";
}
var b:String = "old";
trace(b) // old
func(b);
trace(b) // old
Так... Действительно ли строка является помещенным в черный список типом данных также? Булевская переменная также? Я имею в виду то, что верный способ сказать, какие типы передаются ссылкой?
Неправильно Неправильно Неправильно и Неправильно.. каждый Аргумент передается значением!!! факт можно изменить свойство в объекте, передал, не означает, что можно изменить сам объект. попробуйте следующий код
function Test(a:Object, b:Object):void {
a = b;
}
function Test2():void {
var s1:Sprite = null;
var s2:Sprite = new Sprite;
Test(s1,s2);
Trace(s1);
Trace(s2);
}
и вот результат трассировки:
null
[object Sprite]
Обратите внимание на тонкую разницу между примером DarthZorG и этим примером из Документы Flash:
function passByRef(objParam:Object):void
{
objParam.x++;
objParam.y++;
trace(objParam.x, objParam.y);
}
var objVar:Object = {x:10, y:15};
trace(objVar.x, objVar.y); // 10 15
passByRef(objVar); // 11 16
trace(objVar.x, objVar.y); // 11 16
Точка: Вы не можете изменить то, на что указывает ссылка, но можете изменить данные, на которые указывает ссылка, если эта ссылка является объектом / массивом.
Это все по значению, если вы понимаете программирование на C, вы будете знакомы с концепцией указателей.
Думайте об указателе как о ссылке на что-то в памяти, а все имена переменных "bob from (bob = new person();)" по сути, являются указателями, с которыми вы работаете.
Теперь, когда вы объявляете функцию, поскольку все они имеют значение By Value,
function Test(a:Object, b:Object):void {
a = b;
}
вы можете думать, что и "a" и "b" являются новыми указателями, так что только внутри функции "Test" оба "a" и "b" существуют и указывают на что-то в памяти.
Итак, давайте используем это
var s1:Sprite = null;
var s2:Sprite = new Sprite;
Test(s1,s2);
Итак, указатели s1 и s2 ВСЕГДА будут указывать на "null" и "новый спрайт в памяти" соответственно, если они не будут изменены как s1 и s2 в их "области видимости" <- Пожалуйста, убедитесь, что вы понимаете область видимости переменных, прежде чем пытаться разобраться с этим.
И внутри функции у нас теперь есть два новых указателя "a", указывающий на "null" и "b", указывающий на "тот же спрайт в памяти, что и s2". Так как объекты и массивы по сути являются коллекциями указателей, и только два новых указателя были созданы функцией для использования "a" и "b", любые свойства / открытые переменные "указатели на данные в памяти" "a" или "b" все еще будут точно такими же, как и для "s1" и "s2" и являются точно такими же указателями.
Таким образом, внутри функции, когда "a" устанавливается в "b", на самом деле все, что происходит, это то, что указатель "a" теперь указывает на то же самое, что и "b". Но "s1" и "s2" по-прежнему указывают на то, на что они указывали раньше.
!!!! Если бы это было по ссылке, вы не смогли бы думать об "a" и "b" как о новых указателях, они были бы самими "s1" и "s2", только вы бы записали их как "a" и "b".