Archiv der Kategorie: Blog

C#: Lookup vs. Dictionary

Lookup (Namespace: System.Linq)

A Lookup is a collection which implements the ILookup Interface. It was introduces with LINQ and can be used instead of Dictionary.

A key don’t has to be unique, so you can have multiple entries with the same key. Also the Lookup is immutable, that means you can not add values on the fly, like you could with a List or Dictionary. You can however determine its count (.Count) and you can access the items with [value].

When you look up a key that does not exist in the Lookup, you don’t get a KeyNotFound-Exception but an empty sequence instead.

You cannot directly instantiate a Lookup, it is a result of a LINQ-Selection, which needs a Func for Key-Selection and a Func for Value selection.

Here is an example:

Dictionary (Namespace: System.Collections.Generic)

A key has to be unique, so you can have only one multiple entry with the same key. The Dictionary is mutable, that means you can add values on the fly. Also you can use normal collection methods to determine its count (.Count) and to access the items with [value].

When you look up a key that does not exist you get a KeyNotFound-Exception.
You can directly instantiate a Dictionary.

Here is an example:

Blogpost Original Date: 16.02.2010, Updated: 13.12.2013

Pinnwand KW 50 / 2013 – Codeblock.js, Minification und Bundling in .NET, Hello World Podcast

Hallo zusammen,
heute wieder drei Interessante Links zum Wochenende, heute mit den Themen Codeblock.js, Minification und Bundling in .NET und einem interessanten Podcast von Shawn Wildermuth.
Viel Spaß beim anschauen und viel Glück am heutigen Freitag 😉
Sascha Baumann


Bei Codeblock.js handelt es sich um einen JavaScript-Editor für den Browser. Nicht nur kann man direkt JavaScript inklusive Syntax-Highlighting bearbeiten, man kann es auch direkt ausführen.
Weitere Erklärungen und Demos befindet sich auf der GitHub-Seite des Projektes.


Minification (Verkleinern) und Bundling (Zusammenschnüren) sind heiße Themen für Web- und JavaScript-Entwickler. Dr. Holger Schwichtenberg und Manfred Steyer stellen Lösungen aus der .NET-Welt vor.


Wieder ein wenig Off-Topic, aber auf jeden Fall Interessant. Shawn Wildermuth hat die vierte Ausgabe seines „Hello World“-Podcastes veröffentlicht, in dem Entwickler von Ihrem Werdegang erzählen.


Pinnwand KW 49 / 2013 – Visual Studio 2013, NodeJS Tools for Visual Studio, Windows Network APIs

Guten Tag zusammen,
es ist mal wieder Freitag und Zeit für drei Dinge, die ich diese Woche interessant fand und mit euch teilen möchte. Heute zum Thema Visual Studio 2013, die neuen NodeJS Tools für Visual Studio und ein Cheatsheet zu den Network APIs der Windows Runtime.
Viel Spaß und frohen Nikolaus !
Sascha Baumann
Weiterlesen

Pinnwand KW 48 / 2013 – HTML 5, Produktivität, DirectX in XAML

  • Kein Entwicklerthema an sich, aber ich schaue immer wieder gerne bei productivemag.com vorbei. Hier findet man oft interessante Artikel zur persönlichen Produktivität.

Pinnwand KW 47 / 2013 – Glimpse Developer Dashboard, Nicht unterstützte Features in Windows Phone, XAML Performance Video

  • Scott Hanselman stellt in seinem Artikel das „Developer Dashboard“ Glimpse vor. Persönlich habe ich es noch nicht eingesetzt, ist aber auf jeden Fall eine Option für zukünftige ASP.NET oder MVC Projekte.

Pinnwand KW 46 / 2013 – Vorlagen für Felder in ASP.NET MVC, KnockoutJS, Neu in XAML in Windows 8.1

  • Eine gute Zusammenfassung zum Thema „Vorlagen für Felder“ in ASP.NET MVC von Holger Schwichtenberg und Manfred Steyer findet sich bei Windows Developer.
  • Eine dreiteilige Artikelserie „Beginners Guide Knockout.JS“ findet man bei Sitepoint

Dirty Hack: Sharepoint DelegateControl manipulieren

Hallo zusammen,

keine Lösung die ich euch wirklich empfehlen möchte, mehr eine Notlösung falls Ihr mal in die Verlegenkeit kommt ein Layout-Detail in einem DelegateControl ändern zu wollen, und nicht wirklich Einfluß auf den Rest habt bzw. keine unnötigen Konflikte riskieren wollt.
Nachfolgend ein Beispiel, das die Grafik eines Submit-Buttons innerhalb eines DelegateControls verändert.

Viel Spaß
Sascha

JavaScript ausführen wenn sich UpdatePanel aktualisieren

Hallo zusammen,

Möchte man auf Seiten mit mehreren UpdatePanels gezielt Javascript ausführen, wenn sich ein bestimmtes Panel aktualisiert, kann man das über den Javascript-PageLoaded Event der Hauptseite realisieren. Dieser Event liefert Informationen über die aktualisierten Panels mit. Im folgenden Beispielcode gehen wir nur von einem Panel aus, das Array aus get_panelsUpdated kann aber auch komplett ausgewertet werden.

Noch ein Tip: Verschiedene Zustände eines UpdatePanels (Zum Beispiel bei MultiViews) kann man auch einfach über die Prüfung von Layoutelementen erreichen. Für die ReadOnly Ansicht kann man zum beispiel ein HTML-Element mit der ID ReadOnlyView in die entsprechende View packen. Ist es vorhanden, ist das Panel in der ReadOnly Ansicht und man kann entsprechend JavaScript ausführen.

Viel Spaß beim ausprobieren
Sascha

Easy usage of INotifyPropertyChanged with Property-Attribute

Hello everyone,

today I want to share an implementation I’m using in my personal prototyping-Framework for Silverlight. This is important to mention, because I have tested it only for „works“ but not including any productive parameters like memory-usage or processing-time.

The meaning of a prototyping-framework for me is to get thinks working as quick as possible, to show the outcome to my customer. There are some things I need very often, and so I’m using base-classes a lot.

Weiterlesen

Generic View Models in Silverlight

I like using Base-Classes for any kind of „Class-Group“. Very prominent groups are Models and ViewModels in Silverlight-Applications.

The ViewModel-Baseclass can hold any functionality, that applies to every ViewModel inheriting from it and, if we are talking about Generics, can be very convenient to use.

For example, if I want to apply the factory-pattern to my ViewModels and want every Model to have a static Create-Method I can simply implement this Method in the Base-Class.

Of cause, without Generics we are limited to the return-Type. We could now override this method in every specific ViewModel to at least return the right ancestor of ViewModelBase. An easier way is, to use Generics for this case. The class could look like this :

Now we can simply create our new specific ViewModel like this

to get what we want generically.

 

Another possible scenario would be the following. We know, every ViewModel contains a Collection of Models, all inheriting from a class called ModelBase. we could extend out code the following way:

or, the better way, we could extend our Generic header to be type safe.

Defining a Class by

Like always, if we talk about inheritance, you should avoid to go too far with that. I implemented a Framework I use for rapid prototyping where a lot of things are done in the base-class via reflection, but in a productive environment its not always what you want. Plan your development as precise as possible.

  • What do you want to be individually implemented by each ViewModel ?
  • When is it a good thing to implement it in the Base-Class ?
  • How confusing is you inheritance for other developers ?

 

Good Luck 😮