/
Dynamic C# - A New World of Possibilities Dynamic C# - A New World of Possibilities

Dynamic C# - A New World of Possibilities - PowerPoint Presentation

giovanna-bartolotta
giovanna-bartolotta . @giovanna-bartolotta
Follow
399 views
Uploaded On 2017-01-30

Dynamic C# - A New World of Possibilities - PPT Presentation

Aaron Erickson Lead Consultant ThoughtWorks Author The Nomadic Developer CoAuthor Professional F coming soon Microsoft MVP C Crazy Shit We Can Do With the Dynamic Keyword Not all of this is a good idea remember use and ID: 515627

language dynamic field lookup dynamic language lookup field table objects user linq var stuff static code ruby schmuck case

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "Dynamic C# - A New World of Possibilitie..." is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

Dynamic C# - A New World of Possibilities

Aaron EricksonLead Consultant, ThoughtWorksAuthor, The Nomadic DeveloperCo-Author, Professional F# (coming soon!)Microsoft MVP – C#Slide2

Crazy Shit We Can Do With the Dynamic Keyword*

*Not all of this is a good idea (remember, use and abuse)The initial name of the talk before it was rejected…Slide3

C# - What it resembles now…Slide4
Slide5
Slide6

C# - A little of everything…Curly Braces (1.0)

Functional “Lite” with Linq (3.0)

And Now, Dynamic (4.0)

Generics (2.0)Slide7

Duck TypingSlide8
Slide9

Expando ObjectsSlide10
Slide11

Treat Method Calls Like MessagesSlide12

Send Message

Receive MessageSlide13

And More…

Metaprogramming - take the expression tree called by the caller and do something with it.

Interop

– call other people’s libraries written using real dynamic languages (Ruby, JS, Python).Slide14

Interesting Applications of Dynamic C#Slide15

ActiveRecordSlide16

“ActiveRecord” for XMLSlide17

InteropSlide18

Abuses… oh yes…

You shuddering yet? If not, you should be!Slide19

Is dynamic programming the answer to anything and everything?Slide20

Case For

Case AgainstPerformance – dynamic lookup just can’t be as fast as static lookup.You were confused with var? dynamic will make your head spin.

What is so bad about using strings in a lookup (i.e.

table[“field

”]

vs

table.field

)

If you want dynamic, just use a language designed for it, like Ruby! Or JavaScript!

A lot fewer things are CPU bound than we tend to think. DB lookups? Really?

Sorry – if you are confused with

var

, you really need to put down the keyboard and take up something for dummies, like investment banking.

table.field

looks cleaner, survives a rename refactoring, and can just take the shape of a static object later if introduced (introduce class refactoring for R# someday?)

Sometimes language choice is political. But need for dynamic remains.Slide21

Demo – Stupid Dynamic C# TricksSlide22

Dynamic Everywhere? My Thoughts

Performance argument has merit. Sometimes. No pretending Twitter didn’t happen.

Dynamic readers for things like Json

, XML, Text, Excel, etc – will be really wicked cool!

End-user definition of objects. I can finally envision systems, based on C#, where you can have user defined fields on CRUD objects from databases, where an end user adds a field, names it, and binding just “works”.

This does not belong in your math or stats library. That is what

Clojure

,

Scala

,

Erlang

, F# - or where C# is your given language, LINQ, are for.

Linq

+ Dynamic in C# is mostly unexplored territory. Some amazing things could come out of that intersection.Slide23

So you wanna do dynamic…

You will do TDD. Without it, you are a mess of runtime errors and maintenance nightmares

You will respect that with great power comes great responsibility. Programs using dynamic programs tend to be smaller, but

metaprogramming to extremes can end up becoming “write-only” code.

You will need to consider that vast parts of .NET-land have never seen this stuff before. You will be ready to explain and justify why and how this stuff improves things.

In 2020, you will curse, and maybe throw a chair or two, because of some abuse of dynamic some schmuck did in 2010 in that 10 year old code base.

There is a good chance that schmuck will be me

Slide24

Questions?Slide25

Thank You!

aaron.c.erickson@gmail.comtwitter.com/aaronericksonhttp://nomadic-developer.com/