New Features for Visual Studio 2010 / Dotnet 4.0
-
Upload
shahzad -
Category
Technology
-
view
7.239 -
download
1
description
Transcript of New Features for Visual Studio 2010 / Dotnet 4.0
What is New in Visual Studio 2010 - .Net 4.0 !!!
By : Shahzad Sarwar
Dynamic Type• Background Theory, Difference between Static/Dynamic
languages Plus Strongly typed/Weekly typed Languages[Static/Dynamic deals “When” of type checking for a language, however Strong/Week deals with “How” of type checking for a language.]
• C# is Static and strongly typed language.• Type determination of “dynamic” type can be delayed till run
time. • According to MSDN: “The type is a static type, but an object of
type dynamic bypasses static type checking. In most cases, it functions like it has type object. At compile time, an element that is typed as dynamic is assumed to support any operation.”
• Demo Code at: http://softarchitect.wordpress.com/2010/08/08/software-architecture-c-sharp-4-0-new-feature-dynamic-type/
Dynamic TypeWhere to use:• Perform so many cast operations that it makes your code
almost unreadable.• Situations when a simple cast is not enough and needs
reflection methods, such as InvokeMember or GetProperties.• Enable scenarios that were either impossible or difficult,
including interoperation with dynamic languages. Examples of Usage:
• COM APIs such as the Office Automation APIs• Dynamic APIs such as IronPython libraries• HTML Document Object Model (DOM)
Overload Resolution with Arguments of Type dynamic Demo Code
http://softarchitect.wordpress.com/2011/01/30/software-architecture-%e2%80%93-c-4-0-%e2%80%93-dynamic-type-compile-time-polymorphism-method-overloading/
Dynamic Type• System.Dynamic namespace• DynamicObject Class:Provides a base class for
specifying dynamic behavior at run time.Demo Code:http://softarchitect.wordpress.com/2011/02/26/software-architecture-dynamicobject-class-of-system-dynamic-namespace-in-c-shar-4-0/
• ExpandoObject Class :Represents an object whose members can be dynamically added and removed at run time.
Implementation of the dynamic object concept that enables getting, setting, and invoking members.
Demo Code:http://softarchitect.wordpress.com/2011/02/26/software-architecture-expandoobject-class-of-system-dynamic-namespace-in-c-sharp-4-0/
Tuple• Generic type that provide an option to group together
different type of object in one piece.• Creation method via 1. Constructor 2. Static method create
of System.Tuple • By default, eight elements, for further do nested Tuples.• Tuples vs Anonymous Type
1. Anonymous Type: Can’t be passed as return type from a method. Tuples can be passed as input parameters and return type.2. Tuples can’t be identified with name, they are just called item1,item2,item3…itemn. However items of anonymous type can be named.
Demo Code: http://softarchitect.wordpress.com/2010/08/15/software-architecture-c-sharp-4-0-new-feature-tuple/
Lazy initialization• Backgroud, OR Mapping technologies like linq 2
sql or nhibernate, has ”Lazy loading” which suggest that a object/collection as property in a object is not created till it is accessed in the code.
• Provided with Lazy class at System.Lazy(Of T).• Suggests that “an object is not created till it is
used by the first time the Lazy(Of T).Value property is accessed or the Lazy(Of T).ToString method is called”
• Demo Code:http://softarchitect.wordpress.com/2010/08/14/software-architecture-c-sharp-4-0-new-feature-lazy-initialization/
Named Parameters and Optional Parameters• Named arguments enable you to specify an argument for a
particular parameter by associating the argument with the parameter’s name rather than with the parameter’s position in the parameter list.
• IntelliSense is shown for named parameters, by specifying parameters name followed by “:”
• Each optional parameter has a default value as part of its definition.
• Optional parameters are defined at the end of the parameter list, after any required parameters. If the caller provides an argument for any one of a succession of optional parameters, it must provide arguments for all preceding optional parameters.
• Optional parameters are shown by square brackets.• Demo Code:
http://softarchitect.wordpress.com/2010/07/25/software-architecture-c-4-0-new-feature-named-parameters-and-optional-parameters/
Synchronized Data Structures• New namespace with name “System.Collections.Concurrent”
which provide set of collections having thread safe behavior.• Some Important Thread Safe Collections.
• BlockingCollection<T> • ConcurrentBag<T> • ConcurrentDictionary<TKey, TValue> • ConcurrentQueue<T> • ConcurrentStack<T> • OrderablePartitioner<TSource> • Partitioner • Partitioner<TSource>
• Reference:http://softarchitect.wordpress.com/2010/08/15/software-architecture-c-sharp-4-0-new-feature-synchronized-data-structures-thread-safe-queue/
Covariance and Contravariance and Invariance
• Variance Theory • As more specific type can be assigned to less specific type, but reverse is not
possible. This thin is called compatibility Assignment.• In actual mathematical integers, consider ≤ relation on integers, the "less than or
equal to" relation.• A "relation" is a function which takes two things and returns a bool which
indicates whether the given relationship holds or does not hold.• A projection is a function which takes a single integer and returns a new integer.
So, for example, z → z + z is a projection; call it D for "double". So are z → 0 - z, N for "negate" and z → z * z, S for "square".
• (x ≤ y) = (D(x) ≤ D(y))? • [D preserves the direction of size, The projection D is "covariant"]• (x ≤ y) = (N(x) ≤ N(y))? • [N reverses the direction of size, The projection N is "contravariant"]• (x ≤ y) = (S(x) ≤ S(y))? • [S does not preserve the direction of size, and nor does it reverse it, The
projection S is "invariant".]
Covariance and Contravariance and Invariance
• A Giraffe may be assigned to a variable of type Animal, and therefore an sequence of Giraffes may be assigned to a variable that can hold a sequence of Animals.
• IEnumerable<T> is covariant" what we mean is "the projection which takes a reference type T and produces a reference type IEnumerable<T> is a covariant projection".
• Demo Code 1 & 2• http://msdn.microsoft.com/en-us/library/ms173174(v=vs.80
).aspx• http://blogs.msdn.com/b/ericlippert/archive/2009/11/30/w
hat-s-the-difference-between-covariance-and-assignment-compatibility.aspx
Videos:• http://msdn.microsoft.com/en-us/vcsharp/Video/ee672314• http://msdn.microsoft.com/en-us/vcsharp/video/Ee672319
Generate From UsageTrick is to first use class,its properies,its method , its constructor and then
generate code on basis of usage by simply pressing CTRL + “.” several times. [Demo]
• Generating a Class from Usage• Generating a Delegate Stub from Usage• Generating an Interface Stub from Usage• Generating New Types with Additional Options from Usage ( General for all )• http://msdn.microsoft.com/en-us/library/dd409796.aspx
Intelliense Modes• Use suggestion mode when classes and members are
used before they are defined.• In suggestion mode, when you type in the editor and
then commit the entry, the text you typed is inserted into the code. When you commit an entry in completion mode, the highlighted entry in the members list is inserted into the code.
• To avoid this problem, press CTRL+ALT+SPACEBAR to switch to IntelliSense suggestion mode (as opposed to completion mode).
http://msdn.microsoft.com/en-us/library/exbffbc2.aspx
Call Hierarchy window• To navigate through your code by displaying all calls to and from a selected
method, property, or constructor.• Available at design time, unlike the call stack that is displayed by the
debugger.• Search Scope box >> My Solution, Current Project, and Current Document.• Context Menu Item >>Add As New Root , Remove Root , Go To Definition ,
Find All References , Copy , Refresh Reference: http://msdn.microsoft.com/en-us/library/dd409859.aspx
Navigate To Window• A quick search tool for symbols Just press CTRL + “,” (or click Edit
and then Navigate To) to see the new Navigate To window.• Other Options>>Object Browser,Find Symbol,Find ,Go To Line.Reference:
http://msdn.microsoft.com/en-us/library/4sadchd3(v=VS.100).aspx
Productivity OptionsReference Highlighting• Put the cursor on a symbol (method, property, variable, etc.), all
instances of this symbol are automatically highlighted in the code editor.
• Navigate from one instance to another within a file by pressing CTRL+SHIFT+UP/DOWN ARROW.
Zoom• Press CTRL and use your mouse wheel to enlarge or decrease your
font size.Box Selection and Multiline Editing• Press ALT and then use your mouse or arrow keys to select the box
area.• Multiline box selection was there for delete from many versions of
studio. But now insert,edit,replace is also supported.• http://blogs.msdn.com/b/vseditor/archive/2009/05/25/the-new-box-
selection-now-with-multi-line-editing.aspx
Productivity Options• Code Intellisense with VS 2010(Regardless of what word it starts with – Find all keywords
having that word)Searching for Keywords Searching for TypesExamples: Exception , List
• Pascal Case IntellisenseFind and filter methods based on their pascal naming
pattern. For details see:http://weblogs.asp.net/scottgu/archive/2009/10/22/vs-2010-code-intellisense-improvements-vs-2010-and-net-4-0-series.aspx
Debugging Tips• Position cursor on the line in your code that you want to run the application
to, and then press the Ctrl + F10 keys together.• Grouping Multiple Breakpoints Together using a Label + Filtering/Sorting
Breakpoints by Label +Toggling Breakpoints On/Off by Label• Importing/Exporting Breakpoints• Pinned DataTips• Associating Comments with Pinned DataTips• See the Value Pinned DataTips from Last Debug Session• Importing/Exporting Pinned DataTips• Debugging Applications with IntelliTrace - Totally new debugger tool [Only for ultimate edition-Not covered in presentation-Self Reading]• Parallel Tasks and Parallel Stacks windows to debug a parallel application.
[Not covered in presentation-Self Reading]• http://weblogs.asp.net/scottgu/archive/2010/08/18/debugging-tips-with-vi
sual-studio-2010.aspx• http://weblogs.asp.net/scottgu/archive/2010/04/21/vs-2010-debugger-imp
rovements-breakpoints-datatips-import-export.aspx
Pinning Projects and Solutions • Pinning concept is there only for Windows 7• Window 7 allow to pin Mspaint ot
any other application.• Same can be done for Visual studio 2010• Even Projects can be pinned, so that they are avai
lable for quick access.• http://weblogs.asp.net/scottgu/archive/2010/05/
10/pinning-projects-and-solutions-with-visual-studio-2010.aspx
ASP .Net 4.0 New Features
• Read details here:• http://www.asp.net/learn/whitepapers/aspnet4
Filtering Data with the QueryExtender Control
• http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.linqdatasource.where.aspx
• http://www.asp.net/learn/whitepapers/aspnet4#0.2__Toc253429258
ASP .Net• Routing in ASP.NET 4 Buildin Support – Namespace
• Setting Client IDshttp://
weblogs.asp.net/scottgu/archive/2010/03/30/cleaner-html-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-net-4-0-series.aspx
• Persisting Row Selection in Data Controlshttp://softarchitect.wordpress.com/2010/11/27/software-architecture-asp-net-4-0-for-data-bound-control-enablepersistedselection/
ASP .Net• ASP .Net Charting buildin support• http://weblogs.asp.net/scottgu/archive/2010/02/07/built-in-charting-control
s-vs-2010-and-net-4-series.aspxjQuery library• The Visual Studio templates for both Web Forms and MVC include the open-
source jQuery library.Enabling View State for Individual Controls• In earlier versions of ASP.NET, developers could disable view state
(EnableViewState)for individual controls in order to reduce page size, but had to do so explicitly for individual controls. In ASP.NET 4, Web server controls include a ViewStateMode property that lets you disable view state by default and then enable it only for the controls that require it in the page.
• The ViewStateMode property takes an enumeration that has three values: Enabled, Disabled, and Inherit. Enabled enables view state for that control and for any child controls that are set to Inherit or that have nothing set. Disabled disables view state, and Inherit specifies that the control uses the ViewStateMode setting from the parent control.
ASP .Net - Extensible Output Caching Recap till ASP .Net 3.5<%@ OutputCache Duration="#ofseconds" Location="Any | Client | Downstream | Server | None | ServerAndClient "
Shared="True | False" VaryByControl="controlname" VaryByCustom="browser | customstring" VaryByHeader="headers" VaryByParam="parametername" VaryByContentEncoding="encodings" CacheProfile="cache profile name | ''" NoStore="true | false" SqlDependency="database/table name pair | CommandNotification" ProviderName="Provider Name" %>
• http://weblogs.asp.net/scottgu/archive/2010/01/27/extensible-output-caching-with-asp-net-4-vs-2010-and-net-4-0-series.aspx
• http://msdn.microsoft.com/en-us/library/hdxfb6cy(v=VS.100).aspx
Memory-mapped• According Wiki A memory-mapped file is a segment of virtual memory which has
been assigned a direct byte-for-byte correlation with some portion of a file or file-like resource. This resource is typically a file that is physically present on-disk, but can also be a device, shared memory object, or other resource that the operating system can reference through a file descriptor.
• In C# 4.0, Microsoft has introduced a new namespace “System.IO.MemoryMappedFiles” for manipulating memory mapped file.
• CreateViewStream method of MemoryMappedFiles is used to create a stream which is mapped to memory mapped file.
• Reference: http://softarchitect.wordpress.com/2010/08/15/software-architecture-c-sharp-4-0-new-feature-memory-mapped-file/
Enum-HasFlag(Enum flag )• In C# 4.0, enum has a new function as:
public bool HasFlag(Enum flag )• which takes second enum as parameter and
return bool as true if the bit field or bit fields that are set in flag are also set in the current instance; otherwise, false.
• Logically HasFlag evaluates following expression:• thisInstance And flag = flag • Reference:
http://softarchitect.wordpress.com/2010/09/15/software-architecture-c-sharp-4-0-new-feature-enum-hasflag/
Managed Extensibility Framework or MEF
• The Managed Extensibility Framework or MEF is a library for creating lightweight, extensible applications. It allows application developers to discover and use extensions with no configuration required. It also lets extension developers easily encapsulate code and avoid fragile hard dependencies. MEF not only allows extensions to be reused within applications, but across applications as well.
• Reference: http://softarchitect.wordpress.com/2010/08/14/software-architecture-c-sharp-4-0-new-feature-whywhathow-of-managed-extensibility-framework-mef-sample-calculator-code/
Keep Visiting me at: http://softarchitect.wordpress.com