Используя lastest стандарт походит на хорошую практику, но просто имейте в виду, что WS2007HttpBinding только поддерживается клиентами, которые выполняют, по крайней мере, версии среды выполнения.NET 3,5 SP1 или 3,0 SP1.
На самом деле я советую вам не использовать это слишком часто... это очень дорого. Adobe нужно создать родную функцию для возврата этого нам.
Но пока что... попробуйте вот это:
Вам придется вызвать явное принуждение, чтобы получить это! Потому что при явном принуждении вы получите ошибку вроде этой:
TypeError: Error #1034: Type Coercion failed: cannot convert Main@1c49d31 to flash.utils.ByteArray.
Обратите внимание, что в этой ошибке вы получите то, что хотели... @1c49d31. Этот хэш - как идентификатор при распределении памяти.
Я провел много тестов. Этот хэш просто меняется, когда вы вызываете "new" (в языках C это эквивалентно [[... alloc] init]), а для статических функций и статических свойств выделение происходит немного иначе... в любом случае....
Возвращаясь к Flash, проблема в том, что у нас нет прямого способа получить этот хэш без ошибки.
Но это не очень большая проблема. Все, что вам нужно, это использовать некоторые "try" и "catch". Вот так:
try
{
ByteArray(anyObjectToKnowItAllocationHash);
}
catch (e:Error)
{
trace(e);
}
И вуаля! Вы получите хэш без ошибки! После этого я сделал более утонченный способ... Попробуйте вот так:
var memoryHash:String;
try
{
FakeClass(anyObjectToKnowItAllocationHash);
}
catch (e:Error)
{
memoryHash = String(e).replace(/.*([@|\$].*?) to .*$/gi, '$1');
}
internal final class FakeClass { }
Немного пояснений по этому поводу: fakeClass нужен для того, чтобы убедиться, что это приведет к ошибке. Регулярное выражение - чтобы перехватить последние @..., которые появляются. Потому что объекты и функции выдают разные сообщения об этой ошибке. А $ - для отлова статических объектов, классов и функций, потому что у них нет "@" в хэше памяти и разные зоны в памяти.
Этот маленький код работает для меня просто замечательно! Теперь я могу закончить некоторые замечательные движки, которые я делаю, которые работают с управлением памятью, слабыми ссылками и ID на основе памяти.
Надеюсь, это поможет вам.
Пока, и удачи, мой друг!
Off the top of my head the only way I can see to pull this off would be to use a Dictionary object (you'd probably want to enable weak keys to avoid any side effects) and then just take the objects as you create them and use them as a key to an incrementing ID counter. Then you could simply look to see if two objects existed as a keys in the Dictionary and if so compare the values stored there.
Насколько мне известно, нет способа получить значение, которое отладчик показывает вам во время выполнения.
Общий снимок в темноте, но я думаю, что вы можете использовать сравнение ===, чтобы определить, являются ли два объекта одним и тем же объектом (в отличие от ==, который сравнивает значения объектов). Но я могу ошибаться в этом.