Kalpesh Padia Reflection in.Net. OVERVIEW 9/19/2015 2.

Slides:



Advertisements
Similar presentations
Attributes Programming in C# Attributes CSE 494R (proposed course for 459 Programming in C#) Prof. Roger Crawfis.
Advertisements

CSE 1302 Lecture 8 Inheritance Richard Gesick Figures from Deitel, “Visual C#”, Pearson.
The Type System1. 2.NET Type System The type system is the part of the CLR that defines all the types that programmers can use, and allows developers.
Notes to the presenter. I would like to thank Jim Waldo, Jon Bostrom, and Dennis Govoni. They helped me put this presentation together for the field.
OOP in Java Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
C#.NET C# language. C# A modern, general-purpose object-oriented language Part of the.NET family of languages ECMA standard Based on C and C++
Combining Static and Dynamic Data in Code Visualization David Eng Sable Research Group, McGill University PASTE 2002 Charleston, South Carolina November.
C# Programming: From Problem Analysis to Program Design1 Advanced Object-Oriented Programming Features C# Programming: From Problem Analysis to Program.
ASP.NET Programming with C# and SQL Server First Edition
Reflection Leveraging the Power of Metadata
.NET Attributes and Reflection “What a developer needs to know……” Dan Douglas Blog:
Abstract Data Types and Encapsulation Concepts
A tour of new features introducing LINQ. Agenda of LINQ Presentation We have features for every step of the way LINQ Fundamentals Anonymous Functions/Lambda.
OOP Languages: Java vs C++
A Free sample background from © 2001 By Default!Slide 1.NET Overview BY: Pinkesh Desai.
Lecture Roger Sutton CO530 Automation Tools 5: Class Libraries and Assemblies 1.
Programming Languages and Paradigms Object-Oriented Programming.
.NET Framework Introduction: Metadata
Introduction to .Net Framework
“is a”  Define a new class DerivedClass which extends BaseClass class BaseClass { // class contents } class DerivedClass : BaseClass { // class.
Overview of Previous Lesson(s) Over View  OOP  A class is a data type that you define to suit customized application requirements.  A class can be.
The Metadata System1. 2 Introduction Metadata is data that describes data. Traditionally, metadata has been found in language- specific files (e.g. C/C++
CIS NET Applications1 Chapter 2 –.NET Component- Oriented Programming Essentials.
.NET Framework & C#.
Lecture 8 Inheritance Richard Gesick. 2 OBJECTIVES How inheritance promotes software reusability. The concepts of base classes and derived classes. To.
Lecture 9 Polymorphism Richard Gesick.
Module 7: Object-Oriented Programming in Visual Basic .NET
Obsydian OLE Automation Ranjit Sahota Chief Architect Obsydian Development Ranjit Sahota Chief Architect Obsydian Development.
Reflection in.Net Siun-Wai Seow. Objective Explain.NET Reflection When to use it? How to use it? Topic is in the final exam.
Polymorphism, Inheritance Pt. 1 COMP 401, Fall 2014 Lecture 7 9/9/2014.
.NET Framework Danish Sami UG Lead.NetFoundry
Programming Pillars Introduction to Object- Oriented Programming.
All types in the CLR are self-describing – CLR provides a reader and writer for type definitions System.Reflection & System.Reflection.emit – You can ‘read’
© FPT Software Advanced features in C# 1. © FPT Software Agenda Attributes Delegates & Events Anonymous Types & Dynamic Type Extension Methods Lambda.
Reflection Leveraging the Power of Metadata. Objectives Provide an introduction to.NET Reflection Explain how applications can use Reflection to explore.
C# D1 CSC 298 Elements of C# code (part 2). C# D2 Writing a class (or a struct)  Similarly to Java or C++  Fields: to hold the class data  Methods:
Tuc Goodwin  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.
ABHISHEK BISWAS.NET Reflection Dynamically Create, Find and Invoke Types.
Reflection.NET Support for Reflection. What is Reflection Reflection: the process by which a program can observe and modify its own structure and behavior.
Module 14: Attributes. Overview Overview of Attributes Defining Custom Attributes Retrieving Attribute Values.
Object-Oriented Programming Chapter Chapter
Introduction to Object-Oriented Programming Lesson 2.
OOP Review CS 124.
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB Markus.
Rich Internet Applications 2. Core JavaScript. The importance of JavaScript Many choices open to the developer for server-side Can choose server technology.
.NET Mobile Application Development XML Web Services.
Reflection Programming under the hood SoftUni Team Technical Trainers Software University
July 22, 2001Introduction to.NET1 Introduction to.NET Framework Gholamali Semsarzadeh July 2001.
Building Custom Controls with ASP.NET and the Microsoft ®.NET Framework Rames Gantanant Microsoft Regional Director, Thailand
Delivering Excellence in Software Engineering ® EPAM Systems. All rights reserved. Reflection and Attributes.
C# Fundamentals An Introduction. Before we begin How to get started writing C# – Quick tour of the dev. Environment – The current C# version is 5.0 –
.Net Reflection Taipan Tamsare. Overview Reflection core concepts Exploring metadata Detail information Attributes Building Types at runtime.
METADATA IN.NET Presented By Sukumar Manduva. INTRODUCTION  What is Metadata ? Metadata is a binary information which contains the complete description.
LLVM IR, File - Praakrit Pradhan. Overview The LLVM bitcode has essentially two things A bitstream container format Encoding of LLVM IR.
CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Advanced.NET Programming I 7 th Lecture Pavel Ježek
/* LIFE RUNS ON CODE*/ Konstantinos Pantos Microsoft MVP ASP.NET
Q Reflection Nauzad Kapadia MGB 2003
Module 5: Common Type System
15: Object Object Programming C# © 2003 DevelopMentor, Inc. 12/1/2003.
Reflection SoftUni Team Technical Trainers C# OOP Advanced
Advanced .NET Programming I 7th Lecture
Microsoft .NET 3. Language Innovations Pan Wuming 2017.
CS360 Windows Programming
Lecture 23 Polymorphism Richard Gesick.
.NET and .NET Core 5.2 Type Operations Pan Wuming 2016.
Lecture 22 Inheritance Richard Gesick.
.NET and .NET Core 10. Enabling Contracts Pan Wuming 2017.
CIS 199 Final Review.
Advanced .NET Programming I 8th Lecture
Presentation transcript:

Kalpesh Padia Reflection in.Net

OVERVIEW 9/19/2015 2

INTRODUCTION Reflection – What it is? Why reflection? 9/19/2015 3

LOOKING BACK: AUTOMATION AND COM TYPE INFO 9/19/ TypeLibraries contain type information Exploration through ITypeLib/ITypeInfo Attributes describe behavior of elements e.g. Directionality of parameters e.g. Method role (instance method, property) Dynamic Invocation using IDispatch Type system supports most popular simple types Dynamic types using VARIANT Arrays passed using SAFEARRAY Strings expressed as BSTR

WHAT'S WRONG WITH THAT? 9/19/ Automation client model favors VisualBasic Automation server model favors C/C++ ITypeInfo and IDispatch are way too complicated Information model is limited No sufficient support for complex types SAFEARRAYs are a pain from C/C++ BSTRs are difficult to manage from C/C++ Type information separate from code

.NET REFLECTION CORE CONCEPTS 9/19/ Metadata Single location for type information and code Code is literally contained within type information Every.NET object can be queried for its type Types' metadata can be explored with Reflection Dynamic Type System Highly dynamic and language independent Types may be extended and built at run-time Allows on-the-fly creation of assemblies.NET Compilers use.NET to emit.NET code

EXPLORING METADATA 9/19/2015 7

METADATA: TYPE INFO AT RUNTIME 9/19/ GetType()

WHO ARE YOU? 9/19/ Accessing meta-data: System.Object.GetType() All.NET classes (implicitly) inherit System.Object Available on every.NET class; simple types too Explicit language support for type meta-data C#, JScript.NET: typeof(…) VB.NET: If TypeOf … Is … Then … Determining Type Identity Types have unique identity across any assembly Types can be compared for identity if ( a.GetType() == b.GetType() ) { … };

SYSTEM.TYPE 9/19/ Access to meta-data for any.NET type Returned by System.Object.GetType() Allows drilling down into all facets of a type Category: Simple, Enum, Struct or Class Methods and Constructors, Parameters and Return Fields and Properties, Arguments and Attributes Events, Delegates and Namespaces

WHAT ARE YOU? 9/19/ Value, Interface or Class? IsValueType, IsInterface, IsClass Public, Private or Sealed ? IsNotPublic, IsSealed Abstract or Implementation? IsAbstract Covers all possible properties of a managed type Very intuitive API, no "Parameter Hell"

ANYTHING SPECIAL ABOUT YOU? 9/19/ Special Memory Layout? IsAutoLayout IsExplicitLayout IsLayoutSequential COM Objects? IsCOMObject More… IsUnicodeClass IsSpecialName, etc.

NOW TELL ME WHAT YOU HAVE! 9/19/ Finding and Exploring Members MemberInfo: GetMembers(), FindMembers() Exploring Fields and Properties FieldInfo: GetFields(), PropertyInfo: GetProperties() Exploring Constructors, Methods and Events GetConstructors(), GetMethods(), GetEvents() Exploring attributes, determining implemented interfaces, enumerating nested types, … Summary: Everything you may ever want to know

TYPE AND INSTANCES 9/19/ Type Safety First! Type checking at runtime C#: if ( o is Customer ) { … } VB: If TypeOf o Is Customer Then … End If Dynamic Invocation through Reflection Support for late binding MethodInfo.Invoke() FieldInfo.SetValue() PropertyInfo.SetValue()

DETAIL INFORMATION 9/19/

MEMBERINFO 9/19/ Base class for all "member" element descriptions Fields, Properties, Methods, etc. Provides member kind, name and declaring class MemberInfo MethodBaseParameterInfoFieldInfoEventInfoPropertyInfo MethodInfoConstructorInfo

FIELDINFO, PROPERTYINFO 9/19/ FieldInfo Field data type and attributes Static or Instance field, protection level Can set value through reflection Provides low-level, direct access with SetValueDirect() PropertyInfo Property type and attributes Test methods for readability, writeability "get" and "set" MethodInfo Indexer ParameterInfo Can invoke "set" and "get" through Reflection

METHODINFO, CONSTRUCTORINFO 9/19/ MethodInfo Return type and attributes List of all parameters as ParameterInfo array Detail implementation information through flag-field Can invoke method through Reflection ConstructorInfo Same features as MethodInfo, just for constructors

ATTRIBUTES 9/19/ Custom attributes are the killer-app for Reflection! Attributes enable declarative behavior Attributes allow data augmentation

THE BIGGER PICTURE 9/19/ Types know their Module, Modules know their types Modules know their Assembly and vice versa Code can browse and search its entire context

BUILDING TYPES AT RUNTIME 9/19/

INTRODUCING SYSTEM.REFLECTION.EMIT 9/19/ Full representation of physical structure Allows building modules and assemblies at runtime Transient code only used at runtime Persistent code for reuse Create classes, types and emit IL Used by.NET compilers to build.NET apps

WHY? SOME SCENARIOS… 9/19/ Build classes dynamically from script-like code ASP.NET, Regular Expressions do just that ! Generate code from visual development tools e.g. build interfaces, base classes from UML Create dynamic wrappers for existing code Transfer code-chunks to remote machines Distributed processing scenarios (like

BUILDING ASSEMBLIES 9/19/ System.Reflection.Emit.AssemblyBuilder Dynamically create new assemblies Create manifest and resources Add modules Specify security requirements Can be persisted as files or held in memory Act and behave like any other assembly

BUILDING MODULES 9/19/ System.Reflection.Emit.ModuleBuilder Modules contain types, classes and code Allows creating fully functional modules with code Can associate source code Emit debug symbols Acts like any module created by any.NET compiler

WRITING IL 9/19/ Emit accepts IL (Intermediate Language) code Same code as emitted by C#, VB.NET, Eiffel# IL is optimized and translated into machine code Reflection.Emit puts you "on-par" Same backend as.NET compilers Same access to code-generation Languages are mostly scanners and parsers For more info see System.CodeDOM

PUTTING IT TOGETHER 9/19/

VISUALSTUDIO.NET AND REFLECTION 9/19/

WHAT ASP.NET DOES WITH A PAGE 9/19/

QUESTIONS 9/19/

THANK YOU 9/19/