System.InvalidOperationException: Collection was modified; enumeration operation may not execute. . . . at Program.<>c__DisplayClass8_0.<Method>b__0()
_logger.LogError(ex.Demystify(), "Invalid operation.");
System.InvalidOperationException: Collection was modified; enumeration operation may not execute. . . . at Program.<>c__DisplayClass8_0.<Method>b__0()
_logger.LogError(ex.Demystify(), "Invalid operation.");
- Adblock Plus 2.1.2 http://adblockplus.org/en/ - Add to Search Bar 2.0 http://firefox.maltekraus.de/extensions/add-to-search-bar - Calculator 1.1.27 http://code.google.com/p/firefoxcalculator/ - CodeBurner for Firebug 1.6 http://tools.sitepoint.com/codeburner - ColorZilla 2.8.1 http://www.colorzilla.com/ - Cookies Manager+ 1.5.1 https://addons.mozilla.org/en-US/firefox/addon/cookies-manager-plus/ - CSS Usage 0.2.9 http://spaghetticoder.org/cssusage/ - DOM Inspector 2.0.12 http://www.mozilla.org/projects/inspector/ - Extension List Dumper 1.15.2 http://www.sogame.cat/ - File Title 1.4 http://www.jasnapaka.com/mozilla/filetitle/ - Firebug 1.10.2 http://www.getfirebug.com/ - FireDiff 1.2.0 http://www.incaseofstairs.com/firediff - Firefinder for Firebug 1.04 http://robertnyman.com/firefinder/ - FireFTP 2.0.7 http://fireftp.mozdev.org - FireQuery 1.2 http://firequery.binaryage.com - Forecastfox 2.2.1 http://www.getforecastfox.com/ - Greasemonkey 1.0 http://www.greasespot.net/ - HighlightAll 1.6 http://jgoudey.free.fr/highlightall/ - HttpFox 0.8.11 http://code.google.com/p/httpfox/ - IranianCalendar 3.1.20081222 http://www.alavi.us/jcal/ - Linky 3.0.0 http://gemal.dk/mozilla/linky.html - MeasureIt 0.4.10 http://frayd.us/ - Open With 5.2.1 http://www.darktrojan.net/software/addons/openwith/ - PDF Download 3.0.0.2 http://www.pdfdownload.org - Pixel Perfect 1.7.1 http://www.pixelperfectplugin.com/ - Pray Times! 1.1.7 http://praytimes.org/ - Proxy Selector 0.80.7 http://addons.mozilla.org - Right-Click-Link 1.1.5 http://rickardandersson.com/ - SearchPreview 5.9 http://searchpreview.de/ - Server Spy 0.2.1 http://www.jacquet80.eu/mozilla/exts/ServerSpy/ - Session Manager 0.7.9 http://sessionmanager.mozdev.org/ - Show MyIP 0.8 http://www.tsql.de/download/firefox-addon-ip-adresse-ip-address - Show Picture 2.7 https://addons.mozilla.org/en-US/firefox/addon/show-picture/?src=api - Showcase 0.9.5.8 http://showcase.uworks.net/ - Snap Links Plus 2.2.1 http://snaplinks.mozdev.org/ - Sothink Web Video Downloader for Firefox 6.8 http://www.web-video-downloader.com - Speed Dial 0.9.6.8 http://speeddial.uworks.net/ - SQLite Manager 0.7.7 http://sqlite-manager.googlecode.com/ - Stylish 1.2.6 http://userstyles.org/ - Subtitle Matcher 0.3.4 http://ds6.ovh.org/hashsubtitles/subtitle_matcher_firefox_extensions.php - Tilt 1.0.1 http://blog.mozilla.com/tilt/ - UnMHT 5.7.5 http://www.unmht.org/unmht/en_index.html - UnPlug 2.050 http://unplug.dbatley.com/ - User Agent Switcher 0.7.3 http://chrispederick.com/work/user-agent-switcher/ - View Source Chart 3.05 http://zigrat.com - Viewstate Size 1.0.4 http://www.kirkov.dk/projects/firefox/viewstatesize - Web Developer 1.2.1 http://chrispederick.com/work/web-developer/firefox/ - YSlow 3.1.4 http://developer.yahoo.com/yslow
In the same time when first object-oriented languages were emerging, another concept inspired by general relativity and quantum mechanics was taking shape – actor model. In general terms, the Actor model was defined 1973. and was developed on a platform of multiple independent processors in a network. Similar to the object-oriented approach, this essentially mathematical model, revolved around the concept of actors. An actor is the smallest structural unit of Actor model, and just like objects, they encapsulate data and behavior. In difference to objects, however, actors communicate with each other exclusively trough messages. Messages in actors are processed in a serial manner. According to the full definition of actors, they can do three things:
Imagine that you're using the standard route configuration created by the Visual Studio project template:
name: "API Default", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional }
In that case, you can create an URI to a the resource handled by the FooController.GetById Action Method like this:
var uri = linker.GetUri<FooController>(r => r.GetById(1337));
This will create a URI like this:
http://localhost/api/foo/1337
<code>
element. uilang's logic relies on manipulating classes on HTML elements and using these classes in CSS to show, hide, animate and transform elements when a click occurs. This simple logic lets designers create most of the typical user interface behaviours: tabs, popovers, overlays, sliding menus, etc. Demo <script> let src = 'https://svelte.dev/tutorial/image.gif'; let name = 'Rick Astley'; </script> <img src={src} alt="{name} dancing">
<img {src} alt="{name} dancing">
<script> export let siteName = "dotnettips"; </script> <p>this is a nested component for third tutorial on {siteName}</p>
<script> import Nested from "./Nested.svelte"; export let name; </script> <h1>Hello {name}!</h1> <Nested siteName="dotnettips.info" />
Hello world! this is a nested component for third tutorial on dotnettips.info
در مثال بالا ما یک کامپوننت جدید را ایجاد کرده و از طریق دستور import به App.svelte اضافه کردیم. نکتهای که در اینجا وجود دارد، نحوه مقدار دهی props در کامپوننتها است. اگر به خط 9 دقت کنیم، کامپوننت ما از طریق تگ جدیدی با نام (Nested) به بدنه html برنامه اضافه شده است که یک attribute به نام siteName دارد. siteName متغیر export شده در کامپوننت Nested.svelte است که در کامپوننتها به این صورت مقدار دهی میشود. قبلا نحوه مقدار دهی این خصیصهها را در فایلهای جاوا اسکریپت مشاهده کرده بودیم. نکته دیگری که باید به آن دقت داشت این است که خصیصه siteName مقدار پیش فرض dotnettips را در Nested.svelte به خود اختصاص داده بود. به همین جهت اگر ما siteName را هنگام استفاده از کامپوننت مقدار دهی نکنیم، از مقدار پیش فرض خود استفاده خواهد کرد. ولی اینجا ما با مقدار دهی آن، siteName را به dotnettips.info تغییر دادهایم.
نکته مهم : دقت داشته باشید کامپوننتهای شما همیشه باید با حروف بزرگ شروع شوند؛ به طور مثال در صورت نوشتن <nested/> محتوای کامپوننت نمایش داده نخواهد شد. svelte، از طریق زیر نظر گرفتن حروف کوچک و بزرگ در ابتدای تگها، بین تگهای html و کامپوننتها تمایز قائل میشود.
Spread props :
تا اینجا به صورت خلاصه با props یا خصیصهها آشنا شدهاید و دیدیم که با export کردن یک متغیر در یک کامپوننت، میتوانیم آن را هنگام استفاده مقدار دهی نماییم. برای اینکه تمرینی هم باشد با توجه به مطالبی که تاکنون گفته شده، پروژهی جدیدی را ایجاد کنید و محتوای App.svelte را مانند کد زیر تغییر دهید.
<script> import Info from './Info.svelte'; const pkg = { name: 'svelte', version: 3, speed: 'blazing', website: 'https://svelte.dev' }; </script> <Info name={pkg.name} version={pkg.version} speed={pkg.speed} website={pkg.website}/>
همانطور که در خط دوم کد میبینید، کامپوننتی به نام Info.svelte به این بخش اضافه شدهاست. این کامپوننت را با محتوای زیر ایجاد نمایید:
<script> export let name; export let version; export let speed; export let website; </script> <p> The <code>{name}</code> package is {speed} fast. Download version {version} from <a href="https://www.npmjs.com/package/{name}">npm</a> and <a href={website}>learn more here</a> </p>
اگر برنامه را اجرا کنید یک چنین خروجی را مشاهده خواهید کرد:
The svelte package is blazing fast. Download version 3 from npm and learn more here
<Info {...pkg}/>
<script> let count = 0; function handleClick() { count += 1; } </script> <p>Count : {count}</p> <button on:click={handleClick}> Clicked {count} {count === 1 ? 'time' : 'times'} </button>
<script> let count = 0; let doubled = count * 2; function handleClick() { count += 1; } </script> <button on:click={handleClick}> Clicked {count} {count === 1 ? 'time' : 'times'} </button> <p>{count} doubled is {doubled}</p>
$: doubled = count * 2;
$: console.log(`the count is ${count}`);
$: { console.log(`the count is ${count}`); alert(`I SAID THE COUNT IS ${count}`); }
$: if (count >= 10) { alert(`count is dangerously high!`); count = 9; }
<script> let numbers = [1, 2, 3, 4]; function addNumber() { let newNumber = numbers.length + 1; numbers.push(newNumber); } $: sum = numbers.reduce((t, n) => t + n, 0); </script> <p>{numbers.join(' + ')} = {sum}</p> <button on:click={addNumber}>Add a number</button>
function addNumber() { let newNumber = numbers.length + 1; numbers.push(newNumber); numbers = numbers; }
function addNumber() { let newNumber = numbers.length + 1; numbers = [...numbers, newNumber]; }
<script> let name = ""; function updateName(event) { name = event.target.value; } </script> <h4>My Name Is {name}</h4> <input value={name} on:input={updateName} />
<script> let name = ""; </script> <h4>My Name Is {name}</h4> <input bind:value={name} />
{#if condition} <!-- you html codes ... --> {/if}
<script> let user = { loggedIn: false }; function toggle() { user.loggedIn = !user.loggedIn; } </script> {#if user.loggedIn} <button on:click={toggle}> Log out </button> {/if} {#if !user.loggedIn} <button on:click={toggle}> Log in </button> {/if}
{#if condition} <!-- you html code when condition is true --> {:else} <!-- you html code when condition is false --> {/if}
{#if user.loggedIn} <button on:click={toggle}> Log out </button> {:else} <button on:click={toggle}> Log in </button> {/if}
{#if condition} <!-- you html code when condition is true --> {:else if condition2} <!-- you html code when condition2 is true --> {:else} <!-- you html code when condition and condition2 are false --> {/if}
{#each list as item} <!-- you html code per each item in list --> {/each}
<script> let cats = [ { id: 'J---aiyznGQ', name: 'Keyboard Cat' }, { id: 'z_AbfPXTKms', name: 'Maru' }, { id: 'OUtn3pvWmpg', name: 'Henri The Existential Cat' } ]; </script> <h1>The Famous Cats of YouTube</h1> <ul> {#each cats as cat} <li><a target="_blank" href="https://www.youtube.com/watch?v={cat.id}"> {cat.name} </a></li> {/each} </ul>
<ul> {#each cats as {id,name}} <li><a target="_blank" href="https://www.youtube.com/watch?v={id}"> {name} </a></li> {/each} </ul>
<ul> {#each cats as { id, name }, i} <li><a target="_blank" href="https://www.youtube.com/watch?v={id}"> {i + 1}: {name} </a></li> {/each} </ul>