Download presentation
Presentation is loading. Please wait.
Published byRoss Chase Modified over 9 years ago
1
MICROSOFT.NET INTEROPERABILITY FOR BEGINNERS Vjekoslav Babic (Fortempo)
2
Vjekoslav Babić consultant, trainer, blogger, author Blog:vjeko.com E-mail:vjeko@vjeko.com Author of many How Do I… videos for MSDN and PartnerSource for NAV 2013 and NAV 2013 R2 Co-author of “Implementing Microsoft Dynamics NAV 2009” book ABOUT ME
3
HOW USERS SEE PROGRAMMERS
4
HOW PROGRAMMERS SEE USERS
5
NAV PROGRAMMER PROGRAMMING IN C/AL
6
NAV PROGRAMMER PROGRAMMING IN.NET
7
A lot of the time? WHAT DO PROGRAMMERS REALLY DO?
9
SO, WHAT DO PROGRAMMERS DO A LOT OF THE TIME?
10
UNFORTUNATELY – IT IS OFTEN A WRONG WHEEL
11
WHAT ARE WE GOING TO DO TODAY … Managing strings and text Managing dates, times, and numbers Accessing operating system, file system, and the environment Managing data, arrays, collections, and streams C/AL.NET
12
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
13
System.String A powerful class to handle text information. Maps fully and directly to Text data type in C/AL.
14
System.Text.StringBuilder A very powerful class to handle large text data efficiently.
15
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
16
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 StringBuilder variable 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, …});
17
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
18
System.Diagnostics.Stopwatch A simple and useful class to handle time measurements.
19
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
20
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
21
System.DateTime Manages date and time information. Maps fully and directly to DateTime data type in C/AL. Many useful properties and methods.
22
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
23
System.Globalization.CultureInfo Provides access to culture information. Cultures are the heart of the.NET localization/globalization functionality.
24
System.Globalization.DateTimeFormatInfo Provides access to date and time formatting information.
25
System.Globalization.NumberFormatInfo Provides access to number formatting information.
26
System.Math Provides methods for trigonometric, logarithmic, and other common mathematical functions.
27
System.Numerics.BigInteger Represents an arbitrarily large integer value, without any theoretical upper or lower bounds.
28
System.Convert Converts a base type to another base type.
29
System.IO Namespace that provides many useful input and output classes.
30
System.IO.File Provides static methods for the creation, copying, deletion, moving, and opening of files.
31
STATIC OBJECTS AND METHODS Static classes cannot be instantiated Static methods can be called on classes Static classes and members are shared for the whole application domain Microsoft Dynamics NAV Server runs as a single application domain
32
System.IO.Directory Exposes static methods for creating, moving, and enumerating through directories and subdirectories.
33
System.IO.Path Performs operations on String instances that contain file or directory path information.
34
System.IO.FileSystemWatcher Listens to the file system change notifications and raises events when a directory, or file in a directory, changes.
35
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 WithEvents property. Events can run be: Server-Side: default behavior, if RunOnClient is No Client-Side: if RunOnClient is Yes
36
ENUMERATIONS Types that consist of set of named constants. Similar, but not nearly equal to C/AL options. C/AL.NET Always of Integer typeOf any integer numeric type, except char Always 0-based0-based by default, but can be any value Each consecutive element is increased by 1 Every element can have an explicit numeric value, even negative
37
SUPPORT FOR ENUMERATIONS IN C/SIDE NAV 2009 R2NAV 2013 Does not recognize themRecognizes them You must use integersYou can use named values You cannot use bitwise operators (AND, OR, NOT, XOR). You can use + in place of OR, but that ’ s about it.
38
System.Diagnostics.EventLog Provides interaction with Windows event logs.
39
MANAGING TYPE INFORMATION AT RUNTIME System.Type GETDOTNETTYPE CANLOADTYPE
40
ARRAYS AND COLLECTIONS Arrays: Contain a fixed number of values of the same data type Roughly correspond to C/AL arrays (variables with Dimensions property) Collections: Contain an arbitrary, flexible number of values of the same data type No equivalent in C/AL Both arrays and collections are extensively used in.NET
41
System.Array Provides methods for creating, manipulating, searching, and sorting arrays. Serves as the base class for all arrays in the common language runtime.
42
ENUMERATORS Enable iterating through arrays and collections. C# uses the foreach keyword to manage the iteration. Two interfaces are in charge of the enumerator-based iteration: IEnumerable IEnumerator IEnumerable Exposes the enumerator IEnumerator Allows iteration through enumerable object Current MoveNext
43
System.Object The ultimate base class of all classes in the.NET Framework. The root of the type hierarchy.
44
System.Collections.HashTable Represents a list of key/value pairs that are stored by using a hash table.
45
System.Collections.Generic.List Represents a strongly typed list of objects that can be accessed by index. Provides methods to search, sort, and manipulate lists.
46
GENERICS Allow a single design-time declaration that compiles to multiple run-time types. List can compile to List, List, or List Supported on: Classes and interfaces Methods Properties Structures Fields In C/AL, all generics are of type System.Object
47
MAPPING.NET TYPES TO C/AL Some types map fully: String DateTime InStream and OutStream Many data types map uni-directionally: Most simple data types (Boolean, Decimal, Integer, etc.) Some complex data types (Duration) You cannot use uni-directionally mapped.NET data types in C/AL directly.
48
System.IO.Stream A class that provides a generic view of a sequence of bytes. Typical descendants: System.IO.MemoryStream System.IO.FileStream Fully mutually interchangeable with both InStream and OutStream C/AL types. Limitation: CREATEOUTSTREAM and CREATEINSTREAM cannot be called on System.IO.Stream
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.