820 likes | 940 Vues
Learn basic and advanced concepts in Microsoft .NET Interoperability, covering topics such as constructors, methods, arrays, interfaces, generics, reflection, and more. Gain insights into managing data, creating assemblies, and developing control add-ins. Enhance your skills in working with .NET Framework and understanding complex types with practical examples.
E N D
Microsoft .NET Interoperability for Beginners Vjekoslav Babic (Fortempo)
About me Vjekoslav Babić consultant, trainer, blogger, author Twitter: @vjekob Mibuso: Vjeko Blog: vjeko.com Author of many How Do I… videos for MSDN and PartnerSourcefor NAV 2013 and NAV 2013 R2 Co-author of “Implementing Microsoft Dynamics NAV 2009” book
What Do Programmers Really Do? • Most of the time?
What are we doing here today? • Basic Concepts • Constructors • Methods • Overloading • Events • Enumerations • Slightly Advanced Concepts • Classes and Interfaces • Arrays and Collections • Enumerators • Generics • Reflection • Creating Assemblies • Creating Control Add-ins
How Are We Doing It? • General concepts • Managing strings and text • Managing dates, times, and numbers • Accessing operating system, file system, and the environment • Managing data, arrays, collections, and streams • Custom assemblies • Client Add-ins
Part One • General concepts
Assemblies • Building blocks of the .NET Framework • Assemblies can be: • Executable files (EXE) • Dynamic Link Libraries (DLL) • Assemblies can be deployed to: • Single application: any folder accessible to a .NET application • All applications: Global Assembly Cache (GAC)
Type • .NET Framework is strongly-typed, very similar to C/AL • Types can be: • Simple • Complex • .NET is object-oriented: • Types can be inherited • Two types of complex types: • Classes • Interfaces
Classes and Interfaces • Both represent complex types (types that contain members) • Classes: • Define the structure • Encapsulate functionality • One class can inherit from only one parent class • Interfaces: • Only define the structure, but not the functionality • Represent behaviors of classes • One class can implement multiple interfaces • By convention, names start with I, and many names end with …able
The DotNet Data Type • Variables of type DotNet give access to .NET Framework • Each DotNet variable specifies: • Assembly • Type • DotNet gives access to: • Methods • Properties • Constructors • Enumerations
Important: Case Sensitivity • All .NET Framework identifiers are CASE SENSITIVE
Part TWO • Managing strings and text
System.String • A powerful class to handle text information. • Maps fully and directly to Text data type in C/AL.
Methods • Equivalent to functionsin C/AL • Methods are defined by their signature. Signature consists of: • Name • Type and kind of parameters (by value, by reference, or output) • Return value can be: • Of specific type • void
System.Text.StringBuilder • A very powerful class to handle large text data efficiently.
Constructors • Create an instance of a class. • There is no equivalent in C/AL to constructors. • CREATE function for instantiating automation objects is the closest • Typically used to: • Initialize the default state of an object • Execute default initialization logic • Limit instantiation
Syntax of a Constructor • The name of the constructor always matches the class name. • This probably looks confusing in C/AL: • StringBuilder:= StringBuilder.StringBuilder; • (why in the Earth do we need all those StringBuilders?) • Replace the StringBuildervariable name with s, and it’s more manageable: • s := s.StringBuilder; • The syntax of the constructor in C/AL is the following: • Variable := Variable.[Class Name]({argument1, …});
System.Diagnostics.Stopwatch • A simple and useful class to handle time measurements.
Namespace • A higher-level scope used to organize code • Namespace has a many-to-many relationship to assemblies: • One assembly can contain multiple namespaces • The same namespace can span multiple assemblies
System.Text.RegularExpressions • A namespace containing classes for managing regular expressions. • In case you didn’t know: • Regular Expressions (RegEx) are a language used for searching text data through pattern matching • Regular Expressions are SQL of textual data
Overloading • Capability that allows multiple members to use the same name as long as the signature remains different. • C/AL understands overloading of: • Methods • Constructors • .NET supports, but C/AL does not understand overloading of: • Indexers • Operators
Part Three • Managing dates, times, and numbers
System.DateTime • Manages date and time information. • Maps fully and directly to DateTimedata type in C/AL. • Many useful properties and methods.
Properties and Fields • Properties and Fields are members of complex classes that contain a value. • Property: • Always accessible from C/AL • Can be gettable, settable, or both • Field: • Never accessible from C/AL
System.Globalization • Namespace that defines a lot of useful type for managing date and time formats, regional settings, cultures, etc. • Useful classes: • Calendar • CultureInfo • DateTimeFormatInfo • NumberFormatInfo
System.Globalization.Calendar • Manages time division into years, months, weeks, days, etc.
System.Globalization.CultureInfo • Provides access to culture information. Cultures are the heart of the .NET localization/globalization functionality.
System.Globalization.DateTimeFormatInfo • Provides access to date and time formatting information.
System.Globalization.NumberFormatInfo • Provides access to number formatting information.
System.Math • Provides methods for trigonometric, logarithmic, and other common mathematical functions.
System.Numerics.BigInteger • Represents an arbitrarily large integer value, without any theoretical upper or lower bounds.
System.Convert • Converts a base data type to another base data type.
Part Four • Accessing operating system, file system, and the environment
System.IO • Namespace that provides many useful input and output classes.
System.IO.File • Provides static methods for the creation, copying, deletion, moving, and opening of files.
Static objects and methods • Static classes cannot be instantiated • Static methodscan be called on classes • Static classes and members are sharedfor the whole application domain • Microsoft Dynamics NAV Server runs as a single application domain
System.IO.Directory • Exposes static methods for creating, moving, and enumerating through directories and subdirectories.
System.IO.Path • Performs operations on String instances that contain file or directory path information.
System.IO.FileSystemWatcher • Listens to the file system change notifications and raises events when a directory, or file in a directory, changes.
Events • Enable a class to notify other classes when something of interest happens. • Equivalent to C/AL triggers. • Events are not automatically exposed. • You must first set the WithEventsproperty. • Events can run be: • Server-Side: default behavior, if RunOnClientis No • Client-Side: if RunOnClientis Yes