100% found this document useful (2 votes)
2K views

Exploring the .NET Core 3.0 Runtime: Through Code Generation and Metadata Inspection 1st Edition Roger Villela 2024 Scribd Download

Core

Uploaded by

suleviloreat
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
2K views

Exploring the .NET Core 3.0 Runtime: Through Code Generation and Metadata Inspection 1st Edition Roger Villela 2024 Scribd Download

Core

Uploaded by

suleviloreat
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 55

Experience Seamless Full Ebook Downloads for Every Genre at textbookfull.

com

Exploring the .NET Core 3.0 Runtime: Through Code


Generation and Metadata Inspection 1st Edition
Roger Villela

https://textbookfull.com/product/exploring-the-net-
core-3-0-runtime-through-code-generation-and-metadata-
inspection-1st-edition-roger-villela/

OR CLICK BUTTON

DOWNLOAD NOW

Explore and download more ebook at https://textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

Pro .NET 5 Custom Libraries: Implementing Custom .NET Data


Types 1st Edition Roger Villela

https://textbookfull.com/product/pro-net-5-custom-libraries-
implementing-custom-net-data-types-1st-edition-roger-villela/

textboxfull.com

Introducing Mechanisms and APIs for Memory Management


Using Windows OS Native Runtime APIs 1st Edition Roger
Villela
https://textbookfull.com/product/introducing-mechanisms-and-apis-for-
memory-management-using-windows-os-native-runtime-apis-1st-edition-
roger-villela/
textboxfull.com

Stylish F#: Crafting Elegant Functional Code for .NET and


.NET Core 1st Edition Kit Eason

https://textbookfull.com/product/stylish-f-crafting-elegant-
functional-code-for-net-and-net-core-1st-edition-kit-eason/

textboxfull.com

Stylish F Crafting Elegant Functional Code for NET and NET


Core 1st Edition Kit Eason

https://textbookfull.com/product/stylish-f-crafting-elegant-
functional-code-for-net-and-net-core-1st-edition-kit-eason-2/

textboxfull.com
C 8 0 and NET Core 3 0 Modern Cross Platform Development
Build applications with C NET Core Entity Framework Core
ASP NET Core and ML NET using Visual Studio Code 4th
Edition Mark J. Price
https://textbookfull.com/product/c-8-0-and-net-core-3-0-modern-cross-
platform-development-build-applications-with-c-net-core-entity-
framework-core-asp-net-core-and-ml-net-using-visual-studio-code-4th-
edition-mark-j-price/
textboxfull.com

Pro .NET Framework with the Base Class Library:


Understanding the Virtual Execution System and the Common
Type System Roger Villela
https://textbookfull.com/product/pro-net-framework-with-the-base-
class-library-understanding-the-virtual-execution-system-and-the-
common-type-system-roger-villela/
textboxfull.com

Pro C# 7 with .NET and .NET Core Andrew Troelsen

https://textbookfull.com/product/pro-c-7-with-net-and-net-core-andrew-
troelsen/

textboxfull.com

Pro ASP NET Core Identity Under the Hood with


Authentication and Authorization in ASP NET Core 5 and 6
Applications 1st Edition Adam Freeman
https://textbookfull.com/product/pro-asp-net-core-identity-under-the-
hood-with-authentication-and-authorization-in-asp-net-
core-5-and-6-applications-1st-edition-adam-freeman/
textboxfull.com

Modern Data Access with Entity Framework Core: Database


Programming Techniques for .NET, .NET Core, UWP, and
Xamarin with C# 1st Edition Holger Schwichtenberg
https://textbookfull.com/product/modern-data-access-with-entity-
framework-core-database-programming-techniques-for-net-net-core-uwp-
and-xamarin-with-c-1st-edition-holger-schwichtenberg/
textboxfull.com
Roger Villela

Exploring the .NET Core 3.0 Runtime


Through Code Generation and Metadata Inspection
Roger Villela
Sao Paulo, Sã o Paulo, Brazil

Any source code or other supplementary material referenced by the


author in this book is available to readers on GitHub via the book’s
product page, located at www.​apress.​com/​978-1-4842-5112-6 . For
more detailed information, please visit www.​apress.​com/​source-code .

ISBN 978-1-4842-5112-6 e-ISBN 978-1-4842-5113-3


https://doi.org/10.1007/978-1-4842-5113-3

© Roger Villela 2019

This work is subject to copyright. All rights are reserved by the


Publisher, whether the whole or part of the material is concerned,
specifically the rights of translation, reprinting, reuse of illustrations,
recitation, broadcasting, reproduction on microfilms or in any other
physical way, and transmission or information storage and retrieval,
electronic adaptation, computer software, or by similar or dissimilar
methodology now known or hereafter developed.

Trademarked names, logos, and images may appear in this book. Rather
than use a trademark symbol with every occurrence of a trademarked
name, logo, or image we use the names, logos, and images only in an
editorial fashion and to the benefit of the trademark owner, with no
intention of infringement of the trademark. The use in this publication
of trade names, trademarks, service marks, and similar terms, even if
they are not identified as such, is not to be taken as an expression of
opinion as to whether or not they are subject to proprietary rights.

While the advice and information in this book are believed to be true
and accurate at the date of publication, neither the authors nor the
editors nor the publisher can accept any legal responsibility for any
errors or omissions that may be made. The publisher makes no
warranty, express or implied, with respect to the material contained
herein.

Distributed to the book trade worldwide by Springer Science+Business


Media New York, 233 Spring Street, 6th Floor, New York, NY 10013.
Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-
[email protected], or visit www.springeronline.com. Apress Media,
LLC is a California LLC and the sole member (owner) is Springer
Science + Business Media Finance Inc (SSBM Finance Inc). SSBM
Finance Inc is a Delaware corporation.
This book is dedicated to my mother, Marina Roel de Oliveira (†).
† From 1952, January 14, to 2017, March 17
Introduction
Software engineering is a challenge and a pleasure, and in this book,
you will learn how to program for two advanced features that are
available in the .NET Core 3.0 environment: the .NET API for the
dynamic generation of code and the .NET API for metadata inspection.
This knowledge is the starting point for designing and implementing a
library that can be used by a code generator tool and a metadata
inspector tool. This library will be able to be used on different
operating system platforms, because .NET Core 3.0 is a cross-platform
implementation of ECMA-335. All the source code is written in the C#
programming language, and the code uses only cross-platform Base
Class Library (BCL) types.
The .NET API for code generation can help you improve your
productivity and the quality of your .NET software by automating
repetitive tasks. In this book, you also will learn about the internal
aspects of the Virtual Execution System (VES), which is the virtual
machine (a virtual hardware platform) of the .NET platform that,
among other tasks, runs the intermediate code. You will learn about the
garbage collection (GC) mechanism that is responsible for automatic
memory management, one of the features of the .NET Core platform.
The .NET API for metadata inspection is another valuable .NET Core
3.0 feature, especially for internal tools that are used to validate
assemblies in certain business scenarios. For example, in a .NET
hierarchy, every reference type or value type implicitly inherits from
the System.Object root class type, and in this hierarchy of business
objects, you will probably also have a root class from which all
reference types should inherit. You can use the metadata inspection
feature to check the business implementation rules based on the
configuration files.
Acknowledgments
First, I would like to thank the team at Apress who worked with me on
this book: Smriti Srivastava (acquisitions editor), Shrikant
Vishwakarma (coordinating editor), Matthew Moodie (development
editor), Welmoed Spahr (managing director), and Carsten Thomsen
(technical reviewer). It was a pleasure and an honor to work with such
a highly professional team.
Thanks to both my parents and a special thanks to my dad, Gilberto.
Thanks to my aunts, Marinete and Maria Á guida; to my cousin, Silvana;
and to my brother Eder and my brother Marlos and his wife, Janaína, as
well as my nephew, Gabriel, and nieces, Lívia and Rafaela. I would also
like to thank my professional colleagues and friends who have worked
with me for the past decade.
Table of Contents
Chapter 1:​Exploring .​NET Core
Acronyms
About the .​NET Core Platform
Microsoft Visual Studio 2019 Support for .​NET Core
Tutorial:​Using .​NET Core SDK Previews and configurations
Configuration for Using the .​NET Core SDK Previews
Adding a Class Library (.​NET Core) Project
Choosing the Target .​NET Core SDK
Changing the Project Config File
Using a TFM on the Project Config File
Using .​NET Standard
List of TFMs
Summary
Do’s
Don’ts
Chapter 2:​About Static .​NET Assembly
Acronyms
Development Environment
The Static .​NET Assembly
Metadata System
About the .​NET Assembly Manifest
Summary
Do’s
Don’ts
Chapter 3:​Dynamic .​NET Assemblies:​Defining Dynamic .​NET
Types
About Dynamic Assemblies
Organization of RVJ.​Core .​NET Types
Purpose of .​NET Types
.​NET Type Interfaces
Builders of the System.​Reflection.​Emit Namespace
The Flags and Definition of .​NET Types
About System.​Reflection.​Emit Type Builders
Using an Assembly Type Builder
Naming the Dynamic .​NET Assembly
AssemblyBuilderA​ccess Enum Options
Defining a Dynamic .​NET Type
Defining Dynamic .​NET Field Members for a Dynamic .​NET Type
Instantiating a Dynamic .​NET Type and Assigning a Value for a
Dynamic .​NET Field
Summary
Do’s
Don’ts
Chapter 4:​Working with Dynamic .​NET Properties
About Dynamic .​NET Properties
The Getter and Setter Methods
The Other Methods
The Prefixes get_​and set_​
The specialname and rtspecialname Attributes
Implementing a Dynamic .​NET Property
Summary
Do’s
Don’ts
Chapter 5:​Working with the CodeDOM
About the CodeDOM
Code Generation Using the CodeDOM
Summary
Do’s
Don’ts
Index
About the Author and About the Technical
Reviewer

About the Author


Roger Villela
is an independent software engineer and
entrepreneur with 30 years of
experience. Currently, he writes books
and educates people about technology,
specializing in the inner works of the
following Microsoft development
platforms:
– Microsoft Windows operating system
base services
– Microsoft Universal Windows
Platform (UWP)
– Microsoft WinRT
– Microsoft .NET Framework implementation of the runtime
environment (CLR)
Roger’s work is based on Microsoft Visual Studio (Microsoft
Windows) and Intel Parallel Studio XE (Microsoft Windows), using the
following programming languages, extensions, and projections:
– C++
– Assembly (Intel IA-32/Intel 64)
– Component extensions for runtimes (C++/CLI and C++/CX)

About the Technical Reviewer


Carsten Thomsen
is primarily a back-end developer but works with smaller, front-end
bits as well. He has authored and reviewed a number of books and has
created numerous Microsoft Learning
courses, all related to software
development. He works as a
freelancer/contractor in various
countries in Europe, using Azure, Visual
Studio, Azure DevOps, and GitHub. Being
an exceptional troubleshooter who asks
the right questions, he also enjoys
architecture, research, analysis,
development, testing, and bug fixing.
Carsten is an excellent communicator
with great mentoring and team-lead
skills and excels at researching and
presenting new material.
© Roger Villela 2019
R. Villela, Exploring the .NET Core 3.0 Runtime
https://doi.org/10.1007/978-1-4842-5113-3_1

1. Exploring .NET Core


Roger Villela1

(1) Sao Paulo, Sã o Paulo, Brazil

This chapter gives you an overview of the .NET Core platform and the
features of Microsoft Visual Studio 2019 specific to the environment.

Acronyms
The following are the acronyms introduced in this chapter and used
throughout the book:
Application programming interface (API)
Base Class Library (BCL)
Common Type System (CTS)
Common Intermediate Language (CIL)
Common Language Infrastructure (CLI)
Common Language Runtime (CLR)
Common Language Specification (CLS)
Framework Class Library (FCL)
General availability (GA)
Intermediate language (IL)
Just-in-time (JIT)
Target framework moniker (TFM)
Long-term support (LTS)
Microsoft Intermediate Language (MSIL)
Release candidate (RC)
Virtual Execution System (VES)
About the .NET Core Platform
.​NET Core is a general-purpose, .NET cross-platform development
framework that provides support for Microsoft Windows, Apple macOS,
and Linux distributions. Like the .NET Framework, the .​NET Core
implementation is based on the ECMA-335 specification.
The .NET Core project is available on GitHub; it is open source and
maintained by Microsoft and the .NET community. With the .NET Core
platform, it is possible to write applications, libraries, and components
for desktop development, web development, cloud development, device
development, and IoT applications. Here are some examples of GitHub
repositories, including WPF and Windows Forms, that are now officially
.NET Core–based UI frameworks:
GitHub repository for .NET Core (
https://github.com/dotnet/core )
.NET Core is a self-contained .NET runtime and framework that
implements ECMA-335. It can be (and has been) ported to multiple
architectures and platforms. It supports a variety of installation
options and has no specific deployment requirements itself. This
repo includes several documents that explain both high-level and
low-level concepts about the .NET runtime. These documents are
particularly useful for contributors to get context that can be
difficult to acquire from just reading code.
GitHub repository for .NET Core Foundational Class Libraries, the
BCL and FCL ( https://github.com/dotnet/corefx )
The .NET platform has a standard set of class libraries. The BCL
(core set) is expected with any .NET implementation, because
without it, you would not have a functional implementation of
.NET. The FCL (complete set) is not fully required, but these two
libraries provide .NET types for many general and app-specific
types. Commercial and community libraries can be built on top of
the BCL and FCL libraries. The CoreFX repository contains both,
the BCL and the FCL.
GitHub repository for the .NET Core runtime, the CoreCLR (
https://github.com/dotnet/coreclr )
This is the runtime for .NET Core; it is composed of the garbage
collector, JIT compiler, primitive data types, and low-level classes.
The .NET Core runtime implements the ECMA-335 specification, is
a self-contained .NET runtime and framework, has been ported to
multiple architectures and platforms, and, having no specific
deployment requirements itself, supports a variety of installation
options.
GitHub repository for .NET WPF UI framework (
https://github.com/dotnet/wpf )
The WPF is now officially a .NET Core–based UI framework for the
development of applications and components for the Microsoft
Windows desktop. It runs exclusively on the Microsoft Windows
family of operating systems and relies on Microsoft DirectX
technologies. It has a vector-based graphics architecture that
enables the use of high-DPI monitors and infinity scale and uses
the Extensible Application Markup Language (XAML) to provide a
declarative model for application programming.
GitHub repository for .NET Core Windows Forms UI framework (
https://github.com/dotnet/winforms )
Windows Forms is now officially a .NET Core–based UI framework
for the development of applications and components for the
Microsoft Windows desktop. The Windows Forms UI framework
runs exclusively on the Microsoft Windows family of operating
systems and relies on Microsoft Windows GDI+ technology.
GitHub repository for ASP.NET Core (
https://github.com/aspnet/AspNetCore )
ASP.NET Core is an open source, cross-platform framework for
building web applications, cloud-based applications, IoT
applications, and back-end services for mobile applications. It can
be hosted on Windows, Mac, or Linux and can be deployed in the
cloud or on-premises.
For .NET Core 3.0, Microsoft has officially scheduled the .NET Core
3.0 RC for July 2019, the .NET Core 3.0 GA for September 2019, and the
.NET Core 3.1 LTS for November 2019.
Microsoft is also reorganizing Microsoft .NET, and by 2020, there
will be only one .NET Framework, not the .NET Framework and .NET
Core. You can learn more in the post “Introducing .NET 5” at
https://devblogs.microsoft.com/dotnet/introducing-
net-5/ .
According to an official chronogram, Microsoft has scheduled the
new .NET 5.0 (GA) for November 2020, .NET 6.0 (LTS) for November
2021, .NET 7.0 (GA) for November 2022, and .NET 8.0 (LTS) for
November 2023.
Now let’s talk about Microsoft Visual Studio 2019 support for .NET
Core.

Microsoft Visual Studio 2019 Support for .NET Core


Microsoft offers great support within the Microsoft Visual Studio IDE
for .NET Core development. The images and comments in this section
are based on features of Microsoft Visual Studio 2019 RTM
(Community, Professional, and Enterprise) version 16.1.4.
If you’re using Microsoft .NET Core 3.0 preview version (preview 6
at the time of this writing), Microsoft advocates using Microsoft Visual
Studio 2019 version 16.0 as the minimum version. Here’s a list of
minimum versions to use for Microsoft Visual Studio 2019 and
Microsoft Visual Studio 2017:
Microsoft Visual Studio 2019 version 16.0 or higher for developing
applications and components targeting .NET Core 3.0 (preview 6 at
the time of this writing)
Microsoft Visual Studio 2017 version 15.9 or higher for developing
applications and components targeting .NET Core 2.2
Microsoft Visual Studio 2017 version 15.7 or higher for developing
applications and components targeting .NET Core 2.1
Microsoft Visual Studio 2017 version 15.0 or higher for developing
applications and components targeting .NET Core 1.x
Figure 1-1 shows Microsoft Visual Studio 2019’s new start window
with choices for creating projects using project templates and opening
recent projects and solutions. You can also apply filters for
programming language, platform, and project type.
Figure 1-1 Microsoft Visual Studio 2019’s new start window for creating, opening,
and connecting to a source repository
At the time of writing, the following are examples of templates for
.NET Core in Microsoft Visual Studio 2019:
ASP.NET Core Web Application
Class Library (.NET Core)
Console App (.NET Core)
MSTest Test Project (.NET Core)
NUnit Test Project (.NET Core)
Web Driver Test for Edge (.NET Core)
Windows Forms App (.NET Core)
WPF App (.NET Core)
xUnit Test Project (.NET Core)
Figure 1-2 shows the start window with the Console App (.NET
Core) template selected. You can also see the templates called ASP.NET
Core Web Application and WPF App (.NET Core).
Figure 1-2 Microsoft Visual Studio 2019’s start window showing the list of project
templates

Tutorial: Using .NET Core SDK Previews and


configurations
In this section, I will show you how to use some templates for .NET
Core projects and how to configure Microsoft Visual Studio 2019 to use
the .NET Core preview implementations.

Configuration for Using the .NET Core SDK Previews


To use the .NET Core SDKs in a preview version, you need to change the
configuration of Microsoft Visual Studio 2019.
Select the Tools ➤ Options menu item to open the Options dialog.
Open Environment on the left and select Preview Features. Select “Use
previews of the .NET Core SDK, as shown in Figure 1-3. This allows
Microsoft Visual Studio 2019 to include the .NET Core SDK preview
versions in the list of target frameworks for the projects.
Figure 1-3 The Options dialog, showing the “Use previews of the .NET Core SDK”
setting

Adding a Class Library (.NET Core) Project


Now, with the configuration for the .NET Core SDK previews done, open
the start window. For this tutorial, choose the Class Library (.NET Core)
template and name it RVJ.Core.
For the path, I’m using a temporary folder, as shown in Figure 1-4,
because this project is just a demonstration. If you want to get the
solution and projects for this tutorial, you can find them in this folder:
<install_folder>\Projects\RVJ\2019\Platforms\CLR\C
ode\ExploringDotNETCoreRuntime30\Ch01\Tutorial\.
Figure 1-4 Specifying the name of the project and solution, as well as the location
After the project has been created, you’ll see the standard
development environment that you probably know from previous
versions for developing applications, libraries, and components for the
Microsoft .NET platform.

Choosing the Target .NET Core SDK


On the Application page of the Project Properties window, you’ll see the
“Target framework” list with all the .NET Core SDKs available, including
the preview versions, as shown in Figure 1-5.
Figure 1-5 The list of the .NET Core SDKs available, including the preview versions

Changing the Project Config File


In the Solution Explorer, double-click the project name to open the
content of the project file in the source code editor, as shown in Figure
1-6. There’s also IntelliSense support for project files, as shown in
Figure 1-7.
Figure 1-6 Content of the RVJ.Core.csproj project file

Figure 1-7 IntelliSense is available for the content of .NET Core project files

Using a TFM on the Project Config File


As shown in Figure 1-8, when specifying the target framework for .NET
Core, you can use a TFM in the project file. The TFM specifies the target
framework and, consequently, the sets of APIs available for an
application or library.

Figure 1-8 The sets of APIs used for an application or library are specified using
TFMs for the target framework

Using .NET Standard


The .NET Core or .NET Framework applications and libraries can also
target a version of .​NET Standard, which is a standardized set of APIs
that work across all .NET implementations. Using a library such as the
RVJ.Core sample project, it’s possible to target .NET Standard and gain
access to APIs that work across .NET Core and .NET Framework using
the same codebase. In Listing 1-1, I have changed the
RVJ.Core.csproj project file to use .NET Standard version 2.1.

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<!-- Target Framework Moniker (TFM) -->
<!--
<TargetFramework>netcoreapp3.0</TargetFramework>--
>
<TargetFramework>netstandard2.1</TargetFramewo
rk>

</PropertyGroup>

</Project>
Listing 1-1 Configuration File Using .NET Standard 2.1
After this update, the “Target framework” field on the Application
page of the Project Properties window is automatically updated, as
shown in Figure 1-9.

Figure 1-9 The “Target framework” field on the Application page of the Project
Properties window is automatically updated

List of TFMs
At the time of writing, the following TFMs are currently supported by
project files:
.NET Standard:
netstandard1.0
netstandard1.1
netstandard1.2
netstandard1.3
netstandard1.4
netstandard1.5
netstandard1.6
netstandard2.0
netstandard2.1
.NET Core:
netcoreapp1.0
netcoreapp1.1
netcoreapp2.0
netcoreapp2.1
netcoreapp2.2
netcoreapp3.0
.NET Framework:
net11
net20
net35
net40
net403
net45
net451
net452
net46
net461
net462
net47
net471
net472
net48
Universal Windows Platform:
uap (instead of uap10.0)
uap10.0 (instead of win10 or netcore50)
There are a number of deprecated TFMs that should be updated.
The following are the deprecated TFMs and their replacements:
The TFM netcoreapp is the replacement for the following deprecated
TFMs:
aspnet50
aspnetcore50
dnxcore50
dnx
dnx45
dnx451
dnx452
The TFM netstandard is the replacement for the following
deprecated TFMs:
dotnet
dotnet50
dotnet51
dotnet52
dotnet53
dotnet54
dotnet55
dotnet56
The TFM uap10.0 is the replacement for the following deprecated
TFMs:
netcore50
win10
The TFM netcore45 is the replacement for the following deprecated
TFMs:
win
win8
winrt
The TFM netcore451 is the replacement for the following deprecated
TFMs:
win81
If migrating or developing a .NET project that supports both the
.NET Framework and .NET Core, use the <TargetFrameworks/> tag
(plural), instead of the <TargetFramework/> tag (singular). The use
of the <TargetFrameworks/> tag is also required when using
multiple versions of the same framework (that is, the .NET Framework
or .NET Core) for the same project.
Listing 1-2 shows the RVJ.Core.csproj sample project file using
the <TargetFrameworks/> tag for supporting netcoreapp3.0 and
net48.

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<!-- Target Framework Moniker (TFM) -->

<TargetFrameworks>netcoreapp3.0;net48</Targe
tFrameworks>

<!--
<TargetFramework>netcoreapp3.0</TargetFramework>--
>
<!--
<TargetFramework>netstandard2.1</TargetFramework>-
->
</PropertyGroup>

</Project>
Listing 1-2 Project File Supporting netcoreapp3.0 and net48 Using the
<TargetFrameworks/> Tag

When supporting various target frameworks, you need to make a


change in the source code, because not every .NET type exists in every
implementation of the target .NET library. Specifically, you need to use
the preprocessor directives for conditional inclusion of blocks of source
code, depending on the configured target frameworks. Listing 1-3
shows the RVJ.Core source code with the conditional symbols for
netcoreapp3.0 and net48. At the time of writing, this is the list with
conditional symbols representing the TFMs.
For the .NET Framework, the conditional symbols are as follows:
NETFRAMEWORK
NET20
NET35
NET40
NET45
NET451
NET452
NET46
NET461
NET462
NET47
NET471
NET472
NET48
For .NET Core, the conditional symbols are as follows:
NETCOREAPP
NETCOREAPP1_0
NETCOREAPP1_1
NETCOREAPP2_0
NETCOREAPP2_1
NETCOREAPP2_2
NETCOREAPP3_0
For .NET Standard, the conditional symbols are as follows:
netstandard
netstandard1_0
netstandard1_1
netstandard1_2
netstandard1_3
netstandard1_4
netstandard1_5
netstandard1_6
netstandard2_0
netstandard2_1

namespace RVJ.Core {
public class NETLibrary {
#if NET48

#elif NETCOREAPP3_0

#endif

}
};
Listing 1-3 RVJ.Core Source Code with Symbols for netcoreapp3.0 and net48
In Figure 1-10 and Listing 1-4, there’s an example of a .NET type
that has the functionality available from the .NET Framework 4.8
implementation but does not have the same functionality available in
the .NET Core 3 (preview 5) implementation. The Microsoft Visual
Studio 2019 IntelliSense in the source code editor shows the
information, helping developers make the right decisions when using
the .NET types.

Figure 1-10 Microsoft Visual Studio 2019 IntelliSense in the source code editor
helping developers make the decisions when using .NET types

using System.Reflection;
using System.Reflection.Emit;

namespace RVJ.Core {
public class NETLibrary {

static void SampleMethod() {


Another Random Scribd Document
with Unrelated Content
CHAPTER II.
CLAIRE.

Bram wondered how Mr. Christian could give up the pleasure of


showing Miss Biron round the works himself. Christian’s partiality for
feminine society was as great as his popularity with it, and as well
known. The partiality, but not perhaps the popularity, was inherited
from his father—at least, so folks said.
And Bram Elshaw, looking about for a reason for this extraordinary
conduct on the part of the young master, and noting the wistfulness
of that young man’s glances and the displeasure on the face of the
elder Mr. Cornthwaite, came very near to a correct diagnosis of the
case.
Bram was always the person chosen to carry messages between the
works and Holme Park, the private residence of the Cornthwaites,
and the household talk had filtered through to him about Theodore
Biron, the undesirable relation of French extraction, who had settled
down too near, and whose visits had become too frequent for his rich
kinsman’s pleasure. And the theory of the servants was that these
visits were always paid with the object of borrowing money.
Not that Theodore looked like an impecunious person. To Bram’s
inexperienced eyes Mr Biron and his daughter looked like people of
boundless wealth and great distinction. Theodore, indeed, was if
anything better dressed than either of the Cornthwaites. His black
morning coat fitted him perfectly; his driving gloves were new; his hat
sat jauntily on his head. From his tall white collar to his tight new
boots he was the picture of a trim, youthful-looking country
gentleman of the smart and rather amateurish type.
He had a thin, small-featured face, light hair, light eyebrows, and the
smallest of light moustaches; pale, surprised eyes, and the slimmest
pair of feminine white hands that ever man had. Of these he was
proud; and so his gloves kept their new appearance for a long time,
as he generally carried them in his hand.
As for Claire, she not only looked better dressed than either Mrs. or
Miss Cornthwaite, but better dressed than any of the ladies of the
neighborhood. And this was not Bram’s fancy only; it was solid fact.
Claire Biron had never been in France, and her mother had been an
Englishwoman of Yorkshire descent. But through her father she had
inherited from her French ancestors just that touch of feminine
genius which makes a woman neat without severity, and smart
looking without extravagance.
In her plain gray frock and big yellow chip hat with the white gauze
rosettes, the little slender, dark eyed girl looked as nice as no
ordinary English girl would think of making herself except for some
special occasion.
Bram had not the nicely critical faculty to enable him to discern
things. All he knew, as he walked through the black dust with Miss
Biron and pointed out to her the different processes which were
going on, was that every glance she gave him in acknowledgment of
the information he was obliged to bawl in her ear was intoxicating;
that every insignificant comment she made rang in his very heart
with a delicious thrill of pleasure he had never felt before.
And behind them followed the two older gentleman, Mr. Cornthwaite
explaining, commenting, softening in spite of himself under the artful
interest taken in every dryest detail by the airy Theodore, who trotted
jauntily beside him; and grew enthusiastic over everything.
Before very long, however, Mr. Cornthwaite, who was getting excited
against his will over that hobby of “the works” which Theodore
managed so cleverly, drew his companion away to show him a new
process which they were in course of testing; and for a moment
Bram and Miss Claire were left alone together.
And then a strange thing, a thing which opened Bram’s eyes,
happened. From some corner, some nook, sprang Chris, and,
hooking his arm with affectionate familiarity within that of Miss Biron,
he said—
“All right, Elshaw; I’ll show the rest. Come along, Claire.”
And in an instant he had whirled away with the young lady, who
began to laugh and to protest, round the nearest corner.
Bram was left standing stupidly, with a feeling rising in his heart
which he could not understand. What was this that had happened?
Nothing but the most natural thing in the world; and the impulse of
sullen resentment which stirred within him was ridiculous. There
was, there could be, no rivalry possible between Mr. Christian
Cornthwaite, the son of the owner of the works, and Bram Elshaw, a
workman in his father’s employment. And Miss Biron was a lady as
far above him (Bram) as the Queen was.
This was what Bram told himself as, with hard-set jaw and a lowering
look of discontent on his face, he quietly went back to his work.
But the matter was not ended with him. As he went on mechanically
with his task, as he bent over the great steel bar with his long rod,
his thoughts were with the pair, the well-matched, handsome pair of
lovers, as he supposed them to be, who had flitted off together as
soon as papa’s back was turned.
Now what did that mean?
If it had been any other young lady Bram would not have given the
matter a second thought. Christian Cornthwaite’s flirtations were as
the sand of the sea for multitude, and he would bring half-a-dozen
different girls in a week to “see over the works” when papa could be
relied upon to be out of the way. Christian had the easy assurance,
the engaging, irresponsible manners which always make their
possessor a favorite with the unwise sex, and was reported to be
able to win the favor of a prude in less time than it takes another
man to gain the smiles of a coquette.
And so where was the wonder that this universal favorite should be a
favorite with Miss Biron? Of course, there was nothing in the fact to
be wondered at, but the infatuated Bram would have had this
particular lady as different from other ladies in this respect as he held
her superior in every other.
But then a fresh thought, which was like a dagger thrust on the one
hand, yet which brought some bittersweet comfort for all that, came
into his mind. Surely Miss Biron was not the sort of girl to allow such
familiarity except from the man whom she had accepted for a
husband. Surely, then, these two were engaged—without the
consent, or even the knowledge, of Mr. Cornthwaite very likely, but
promising themselves that they would get that consent some day.
And as he came to this decision Bram looked black.
And all the time that these fancies chased each other through his
excited brain this lad of twenty retained a saner self which stood
outside the other and smiled, and told him that he was an infatuated
young fool, a moonstruck idiot, to tumble headlong into love with a
girl of whom he knew nothing except that she was as far above him,
and of all thought of him, as the stars are above the sea.
And he was right in thinking that there was not a man in all that
crowd of his rough fellow-workmen who would not have jeered at
him and looked down upon him as a hopeless ass if they had known
what his thoughts and feelings were. But for all that there was the
making in Bram Elshaw, with his dreams and his fancies, of a man
who would rise to be master of them all.
Out of the heat of the furnace and the glowing iron Bram Elshaw
presently passed into the heat of the sun, and stood for a moment,
his long rod in his hand, and wiped the sweat from his face and
neck. And before he could turn to go back again he heard a little
sound behind him which was not a rustle, or a flutter, or anything he
could describe, but which he knew to be the sound of a woman
moving quickly in her skirts. And the next moment Miss Biron
appeared a couple of feet away from him, smiling and growing a little
pink as a young girl does when she feels herself slightly
embarrassed by an unaccustomed situation.
Before she spoke Bram guessed by the position in which she held
her little closed right hand that she was going to offer him money.
And he drew himself up a little, and blushed a much deeper red than
the girl—not with anger, for after all was it not just what he might
have expected? But with a keener sense than ever of the difference
between them.
Miss Biron had begun to speak, had got as far as “I wanted to thank
you for explaining everything so nicely,” when something in his look
caused her to stop and hesitate and look down.
She was suddenly struck with the fact that this was no common
workman, this pale, grimy young Yorkshireman with the strong jaw
and the clear, steady eyes, although he was dressed in an old shirt
blackened by coal dust, and trousers packed with pieces of sacking
tied round with string.
“Ah’m reeght glad to ha’ been of any service to yer, Miss,” said Bram
in a very gentle tone.
There was a moment’s silence, during which Miss Biron finally made
up her mind what to do. Looking up quickly, with the blush still in her
face, she said, “Thank you very much. Good-morning,” and, to
Bram’s great relief, turned away without offering him the money.
CHAPTER III.
SOMETHING WRONG AT THE FARM.

It is certain that Bram Elshaw was still thinking more of Miss Biron
than of the communication which Mr. Cornthwaite was to make to
him when he presented himself at the back door of his employer’s
residence on the following Thursday evening.
Holme Park was on the side of one of the hills which surround the
city of Sheffield, and was a steep, charmingly-wooded piece of grass
and from a small plateau in which the red brick house looked down
at the rows of new red brick cottages, at the factory chimneys, and
the smoke clouds of the hive below.
Bram had always taken his messages to the back door of the house,
but he was shrewd enough to guess, from the altered manner of the
servant who now let him in and conducted him at once to the library,
that this was the last time he should have to enter by that way.
And he was right. Mr Cornthwaite was as precise in manner, as
business-like as usual, but his tone was also a little different, as he
told Bram that his obvious abilities were thrown away on his present
occupation, and that he was willing to take him into his office, if he
cared to come, without any premium.
Bram thanked him, and accepted the offer, but he showed no more
than conventional gratitude. The shrewd young Yorkshireman was
really more grateful than he seemed, but he saw that his employer
was acting in his own interest rather than from benevolence, and,
although he made no objections to the smallness of the salary he
was to receive, he modestly but firmly refused to bind himself for any
fixed period.
“Ah may be a failure, sir,” he objected quietly, “and Ah should like to
be free to goa back to ma auld work if Ah was.”
So the bargain was struck on his own terms, and he retired
respectfully just as a servant entered the library to announce that
Miss Biron wished to see Mr. Cornthwaite. And at the same moment
the young girl herself tripped into the room, with a worried and
anxious look on her face.
Mr. Cornthwaite rose from his chair with a frown of annoyance.
“My dear Claire, your father really should not allow you to come this
long way by yourself—at night, too. It is neither proper nor safe. By
the time dinner is over it will be dark, and you have a long way to
go.”
“Oh, but I am going back at once, as soon as you have read this,”
said Claire, putting a little note fastened up into a cocked hat like a
lady’s, into his unwilling hand. “And perhaps Christian would see me
as far as the town, if you think I ought not to go alone.”
But this suggestion evidently met with no approval from Mr.
Cornthwaite, who shook his head, signed to Bram to remain in the
room and began to read the note, all at the same time.
“My dear,” said he shortly, as he finished reading and crumpled it up,
“Christian is engaged at present. But young Elshaw here will show
you into your tram, won’t you, Elshaw?”
“Certainly, sir.” Bram, who had the handle of the door in his hand,
saluted his employer, and retreated into the hall before Claire, who
had not recognized him in his best clothes, had time to look at him
again.
“A most respectable young fellow, my dear, though a little rough.
One of my clerks,” Bram heard Mr. Cornthwaite explain rapidly to
Miss Biron as he shut himself out into the hall and waited.
Bram was divided between delight that he was to have the precious
privilege of accompanying Miss Biron on her journey home, and a
sense of humiliation caused by the shrewd suspicion that she would
not like this arrangement.
But when a few minutes later Claire came out of the library all his
thoughts were turned to compassion for the poor girl, who had
evidently received a heavy blow, and who had difficulty in keeping
back her tears. She dashed past him out of the house, and he
followed at a distance, perceiving that she had forgotten him, and
that his duty would be limited to seeing without her knowledge that
she got safely home.
So when she got into a tram car at the bottom of the hill outside the
park he got on the top. When she got out at St. Paul’s Church, and
darted away through the crowded streets in the direction of the Corn
Exchange, he followed. Treading through the crowds of people who
filled the roadway as well as the pavement, she fled along at such a
pace that Bram had difficulty in keeping her little figure in view. She
drew away at last from the heart of the town, and began the ascent
of one of the stony streets, lined with squalid, cold-looking cottages,
that fringe the smoke-wreathed city on its north-eastern side.
Bram followed.
Once out of the town, and still going upwards, Claire Biron fled like a
hare up a steep lane, turned sharply to the left, and plunged into a
narrow passage, with a broken stone wall on each side, which ran
between two open fields. This passage gave place to a rough
footpath, and at this point the girl stood still, her gaze arrested by a
strange sight on the higher ground on the right.
It was dark by this time, and the outline of the hill above, broken by a
few cottages, a solitary tall chimney at the mouth of a disused coal
pit, and a group of irregular farm buildings, was soft and blurred.
But the windows of the farmhouse were all ablaze with light. A long,
plain stone building very near the summit of the hill, and holding a
commanding situation above a sudden dip into green pasture land,
the unpretending homestead dominated the landscape and blinked
fiery eyes at Claire, who uttered a low cry, and then dashed away
from the footpath by a short cut across the fields, making straight for
the house.
All the blinds were up, and groups of candles could be seen on the
tables within, all flickering in the draught, while the muslin curtains in
the lower rooms were blown by the evening wind into dangerous
proximity to the lights.
And in all the house there was not a trace of a living creature to be
seen, although from where Bram stood he could see into every
room.
He followed still, uneasy and curious, as Claire climbed the garden
wall with the agility of a boy, and ran up to the house door.
It was locked. Nothing daunted, she mounted on the ledge of the
nearest window, which was open only at the top, threw up the sash,
and got into the room.
A moment later she had blown out all the candles. Then she ran
from room to room, extinguishing the lights, all in full view of the
wondering Bram, who stood watching her movements from the lawn,
until the whole front of the house was in complete darkness.
Then she disappeared, and for a few minutes Bram could see
nothing, hear nothing.
But presently from the back part of the rooms, there came to his
listening ears a long, shrill cry.
CHAPTER IV.
CLAIRE’S APOLOGY.

The effect of that cry upon Bram Elshaw was to set him tingling in
every nerve.
The lawn which ran the length of the farmhouse was wide, and
sloped down to a straggling hedge just inside the low stone wall
which surrounded the garden and the orchard. Up and down this
lawn Bram walked with hurried footsteps, uncertain what to do. For
although he recognized Claire’s voice, the cry she had uttered
seemed to him to indicate surprise and horror rather than pain, so
that he did not feel justified in entering the house by the way she had
done until he felt more sure that his assistance was wanted, or that
his intrusion would be welcome.
In a very few moments, however, he heard her cry—“Don’t, don’t; oh,
don’t! You frighten me!”
Bram, who was by this time close to the door, knocked at it loudly.
Waiting a few moments, on the alert for any fresh sounds, and
hearing nothing, he then made his way round to the back of the
house, leaping over the rough stone wall which divided the garden
from the farmyard, and tried the handle of the back door.
This also was fastened on the inside.
But at the very moment that Bram lifted the latch and gave the door
a rough shake he heard a sound like the clashing of steel upon
stone, a scuffle, a suppressed cry, and upon that, without further
hesitation, Bram put his sinewy knee against the old door, and at the
second attempt burst the bolt off.
There was no light inside the house except that which came from the
fire in an open range on the right; but by this Bram saw that he was
in an enormous stone-paved kitchen, with open rafters above, a relic
of the time when the farmer was not one of the gentlefolk, but dined
with his family and his laborers at a huge deal table under the
pendant hams and bunches of dried herbs which in the old days
used to dangle from the rough-hewn beams.
Bram, however, noticed nothing but that a door on the opposite side
of the kitchen was swinging back as if some one had just passed
through, and he sprang across the stone flags and threw it open.
There was a little oil lamp on a bracket against the wall in the wide
hall in which he found himself. Standing with his back to the solid
oak panels of the front door, brandishing a naked cavalry sword of
old-fashioned pattern, stood the airy Theodore Biron in dressing-
gown and slippers, with his hair in disorder, his face very much
flushed, and his little fair moustache twisted up into a fierce-looking
point at each end.
On the lowest step of a wide oak staircase, which took up about
twice the space it ought to have done in proportion to the size of the
hall, stood little Claire, pale, trembling with fright, trying to keep her
alarm out of her voice, as she coaxed her father to put down the
sword and go to bed.
“Drunk! Mad drunk!” thought Bram as he took in the situation at a
glance.
At sight of the intruder, whom she did not in the least recognize,
Claire stopped short in the midst of her entreaties.
“What are you doing here? Who are you?” asked she, turning upon
him fiercely.
The sudden appearance of the stranger, instead of further infuriating
Mr. Biron, as might have been feared, struck him for an instant into
decorum and quiescence. Lowering the point of the weapon he had
been brandishing, he seemed for a moment to wait with curiosity for
the answer to his daughter’s question.
When, however, Bram answered, in a respectful and shame-faced
manner, that he had heard her call out and feared she might be in
need of help, Theodore’s energy returned with full force, and he
made a wild pass or two in the direction of the young man, with a
recommendation to him to be prepared.
Claire’s terrors returned with full force.
“Oh, father, don’t, don’t! You’ll hurt him!” she cried piteously.
But the entreaty only served to whet Theodore’s appetite for blood.
“Hurt him! I mean to! I mean to have his life!” shouted he, while his
light eyes seemed to be starting from his head.
And, indeed, it seemed as if he would proceed to carry out this
threat, when Bram, to the terror of Claire and the evident
astonishment of her father, rushed upon Theodore, and, cleverly
avoiding the thrust which the latter made at him, seized the hilt of the
sword, and wrested it from his grasp.
It was a bold act, and one which needed some address. Mr Biron
was for the moment sobered by his amazement.
“Give me back my sword, you impudent rascal!” cried he, making as
he spoke a vain attempt to regain possession of the weapon.
But Bram, who was a good deal stronger than he looked, kept him
off easily with his right hand, while he retained a tight hold on the
sword with his left.
“You shall have it back to-morrow reeght enough,” said Bram good-
humoredly. “But maybe it’ll be safer outside t’house till ye feel more
yerself like. Miss Claire yonder knaws it’s safe wi’ me.”
“Oh, yes; oh, yes,” panted Claire eagerly, though in truth she had not
the least idea who this mysterious knight-errant was. “Let him have
it, father; it’s perfectly safe with him.”
But this action of his daughter’s in siding with the enemy filled Mr
Biron with disgust. With great dignity, supporting himself against the
wall as he spoke, and gesticulating emphatically with his right hand,
while with his left he fumbled about for his gold pince-nez, he said in
solemn tones—
“I give this well-meaning but m-m-muddle-headed young man credit
for the best intentions in the world. But same time I demand that he
should give up my p-p-property, and that he should take himself off
m-m-my premises without furth’ delay.”
“Certainly, sir. Good-evening,” said Bram.
And without waiting to hear any more of Mr Biron’s protests, or
heeding his cries of “Stop thief!” Bram ran out as fast as he could by
the way he had come, leaving the outer door, which he had
damaged on his forcible entry, to slam behind him.
Once outside the farmyard, however, he found himself in a difficulty,
being suddenly stopped by a farm laborer, in whom his rapid exit
from the house had not unnaturally aroused suspicions, which were
not allayed by the sight of the drawn sword in his hand.
“Eh, mon, who art ta? And where art agoin’?”
Bram pointed to the house.
“There’s a mon in yonder has gotten t’ jumps,” explained he simply,
“and he was wa-aving this abaht’s head. So Ah took it away from
’un.”
The other man grinned, and nodded.
“T’ mester’s took that way sometimes,” said he. “But this sword’s
none o’ tha property, anyway.”
Bram looked back at the house. Nobody had followed him out; even
the damaged door had been left gaping open.
“Ah want a word wi’ t’ young lady,” said he. “She knaws me. I work
for Mr. Cornthwaite down at t’ works in t’ town yonder.”
“Oh, ay; Ah’ve heard of ’un. He’s gotten t’ coin, and,” with a
significant gesture in the direction of the farmhouse, “we haven’t.”
“You work on t’ farm here?” asked Bram.
The man answered in a tone and with a look which implied that
affairs on the farm were in anything but a flourishing condition—
“Ay, Ah work on t’ farm.”
And, apparently satisfied of the honesty of Bram’s intentions, or else
careless of the safety of his master’s property, the laborer nodded
good-night, and walked up the hill towards a straggling row of
cottages which bordered the higher side of the road near the summit.
Bram got back into the farmyard, and waited for the appearance at
the broken door of some occupant of the house to whom he could
make his excuses for the damage he had done. He had a shrewd
suspicion who that occupant would be. Since all the noise and
commotion he and Theodore Biron had made had not brought a
single servant upon the scene, it was natural to infer that Mr. Biron
and his daughter had the house to themselves.
And this idea filled Bram with wonder and compassion. What a life
for a young girl, who had seemed to rough Bram the epitome of all
womanly beauty and grace and charm, was this which accident had
revealed to him. A life full of humiliations, of terrors, of anxieties
which would have broken the heart and the spirit of many an older
woman. Instead of being a spoilt young beauty, with every wish
forestalled, every caprice gratified, his goddess was only a poor little
girl who lived in an atmosphere of petty cares, petty worries, under
the shadow of a great trouble, her father’s vice of drink.
And as he thought about the girl in this new aspect his new-born
infatuation seemed to die away, the glamour and the glow faded, and
he thought of her only as a poor little nestling which, deprived of its
natural right of warmth and love and tenderness, lives a starved life,
but bears its privations with a brave look.
And as he leaned against the yellow-washed wall he heard a slight
noise, and started up.
Miss Biron, candlestick in hand, was examining the injuries done to
her back door.
Bram opened his mouth to speak, but he stammered and uttered
something unintelligible, taken aback as he was by the vast
difference between the fancy picture he had been drawing of the
young lady and the reality with which he was confronted.
For instead of the wan, white face, the streaming eyes, the anxious
and weary look he had expected to see, he found himself face to
face with a cheery little creature, brisk in movement, bright of eyes,
who looked up with a start when he appeared before her, and said
rather sharply—
“This is your doing, I suppose? And instead of being scolded for the
mischief you have done you expect to be thanked and perhaps
rewarded, no doubt?”
At first Bram could scarcely believe his ears.
“Ah’m sorry for t’ damage Ah’ve done, miss,” he said hurriedly. “And
that’s what Ah’ve waited for to tell yer, nowt but that. But it’s not so
bad as it looks. It’s nobbut t’ bolt sprung off and a scratch to the paint
outside. If you can let me have a look into your tool-chest, Ah’ll set it
reght at once. And for t’ paint, Ah’ll come up for that to-morrow
neght.”
Miss Biron smiled graciously. The humble Bram had his sense of
humor tickled by the airs she was giving herself now, as if she had
forgotten altogether her helpless fright of only an hour before, and
the relief with which she had hailed his disarming of her father.
“Well, that’s only fair, isn’t it?” said she with a bright smile, as she
instantly acted upon his advice by disappearing into the house like a
flash of lightning.
Bram heard the rattling of tools, and as it went on some time without
apparent result, he stepped inside the door to see if he could be of
any assistance.
Claire had thrown open the door of a cupboard to the left of the wide
hearth, and was standing on a Windsor chair turning over the
contents of a couple of biscuit tins on the top shelf. Bram, slow step
by slow step, came nearer and nearer, fascinated by every rapid
movement of this, the first feminine creature who had ever aroused
his interest. How small her feet were! Bram looked at them, and then
turned away his head, as if he had been guilty of something
sacrilegious. And the movement of her arm as she turned over the
odds and ends in the boxes, the bend of her dark head as she
looked down, filled him afresh with that strange new sense of wonder
and delight with which she had inspired him on his first sight of her at
the works. Against the light of the candle, which she had placed on
the shelf, he saw her profile in a new aspect, in which it looked
prettier, more childlike than ever.
“Better give me t’ box, miss,” suggested Bram presently.
Miss Biron started, not knowing that he was so near.
“Very well,” said she. “You can look, but I am afraid you won’t find
any proper tools here at all.”
She was right. But Bram was clever with his hands as well as with
his head, and he could “make things do.” So that in a very few
minutes he was at work upon the door, while Miss Biron held the
light for him, and watched his nimble movements with interest.
And while she watched him it occurred to her, now that she felt quite
sure he was no mere idler who had burst his way into the house from
curiosity, that she had been by no means as grateful for his timely
entrance as he had had a right to expect. And the candle began to
shake in her hands as she glanced at him rather shyly, and
wondered how, without casting blame upon her father, she could
make amends to this methodical, quiet, and rather mysterious young
Orson for the part he had taken in the whole affair.
“I’m really very much obliged to you,” she said at last, with a very
great change in her manner from the rather haughty airs she had
previously assumed. “I——”
She hesitated, and stopped. Bram had glanced quickly up at her,
and then his eyes had flashed rapidly back to his work again.
“I seem to know your face,” said she with a manner in which sudden
shyness struggled with a sense of the dignity it was necessary for
her to maintain in these novel circumstances. “Where have I met you
before? And what is your name?” she added quickly, as a fresh
suspicion rushed into her mind.
“My name is Elshaw, miss. Bram Elshaw,” he answered, as he sat
back on his heels and hunted again in the biscuit tin. “And I’ve seen
you. I saw you t’ other day, last Tuesday, at Mr. Cornthwaite’s works.
It was me showed you round, miss.”
“Oh!”
The bright little face of the girl was clouded with bewilderment.
“And then again Ah saw you to-neght up to Mr. Cornthwaite’s house,
up at t’ Park. And he told me for to see you home, miss.”
“Oh!”
This time the exclamation was one of confusion, annoyance, almost
of horror.
“I remember! He said—he said—he would send some one to see me
home. But—er—er—I was in such a hurry—that—that I forgot. And I
ran off by myself. And—and so you followed; you must have followed
me!”
And Claire’s pretty face grew red as fire.
The truth was she had been angry with Mr. Cornthwaite for the
manner of his reception, for the dry remarks he had made about her
father, and for his manifest and most ungracious unwillingness to
allow Christian to see her home. And she had made up her mind that
no “respectable young man” of Mr. Cornthwaite’s choosing should
accompany her if Chris might not. And so, dashing off through the
park in the dusk by a short cut, she had thought to escape the
ignominy which Mr. Cornthwaite had designed for her.
Bram, with a long, rusty nail between his teeth, grew redder than
she. In an instant he understood what he had not understood before,
that the young lady had taken the offer of his escort as a humiliation.
She had wanted to go back with Christian, and Mr. Cornthwaite had
wished to put her off with one of his workmen! Bram felt that her
indignation was just, although he was scarcely stoical enough not to
feel a pang.
“You see, miss,” he said apologetically, taking the nail out of his
mouth, “Ah was bound to come this weay, and so Ah couldn’t help
but follow you. And—and when Ah heard you call aht—why Ah
couldn’t help but get in. Ah’m reght sorry if Ah seemed to be taking a
liberty, miss.”
Again Claire was struck as she had been that day at the works by
the innate superiority of the man to his social position, of his tone to
his accent.
“It was very lucky for me—I am very glad, very grateful,” said she
hurriedly, in evident distress, which was most touching to her hearer.
“I don’t know what I should have done—I—I must explain to you. You
must not think my father would have done me any harm,” she went
on earnestly, with a great fear at her heart that Bram would report
these occurrences to his employer, and furnish him with another
excuse for slighting her father. “He gets like that sometimes,
especially in the hot weather,” she went on quickly, and with so much
intensity that it was difficult to doubt her faith in the story. “He was in
the army once, and he had a sword-cut on the head when he was
out in India. And it makes him excitable, very excitable. But it never
lasts long. Now he is fast asleep, and to-morrow morning he will be
quite himself, quite himself again. You won’t say anything about it to
Mr. Cornthwaite, will you?” she wound up, with a sidelong look of
entreaty, as Bram, having finished his task, rose to his feet and
picked up the coat he had thrown off before setting to work.
“No, miss.”
There was something in his tone, in his look, as he said just those
two words which inspired Claire with absolute confidence.
“Thank you,” she said. “Thank you very much.”
And Bram understood that her gratitude covered the whole ground,
and took in his forcible entrance, the time he had spent in mending
the door, and his final promise.
“And Ah’ll look in to-morrow neght, miss,” said he as he turned in the
doorway and noticed how sleepy her brown eyes were beginning to
look, “and give a coat of paint to’t.”
“Oh, you need not. It’s very good of you.”
He touched his cap, and turned to go; but as he was turning, Claire,
blushing very much, and conscious of this conflict between
conventionality and her sense of what she owed to this dignified
young workman, who could not be rewarded with a “tip,” thrust out
her little hand.
Then Bram’s behavior was for the moment rather embarrassing. The
privilege of touching her fingers, of holding the hand which had
stirred in him so many strange reflections for a moment in his own,
as if they had been friends, equals, was one which he could not
accept with perfect equanimity. She saw that he started, and,
blushing more than ever, she seemed in doubt as to whether she
should withdraw her hand. But, seeing her hesitation, Bram
mastered himself, took the hand she offered, wrung it in a strong
grip, and walked quickly away towards the gate.
He felt as if he was in Heaven.
CHAPTER V.
BRAM’S RISE IN LIFE.

What was there about this little brown-eyed girl that she should
bewitch him like this? Bram, who flattered himself that he had his
wits about him, who had kept himself haughtily free from love
entanglements up to now, could not understand it. And the most
amazing part of it all was that his feelings about her seemed to
undergo an entire change every half-hour or so. At least a dozen
times since his infatuation began he fancied himself quite cured, and
able to laugh at himself and look down upon her. And then some
fresh aspect of the little creature would strike him into fresh
ecstasies, and he would find himself as much under the spell as
ever.
Thus the first sight of her that evening in Mr. Cornthwaite’s study had
thrilled him less than the announcement of her name. But, on the
other hand, the touch of her hand so unexpectedly accorded, had
quickened his feelings into a delicious frenzy, which lasted during the
whole of his walk down into the town and out to the one small
backroom in a grimy little red brick house where he lodged.
When Bram tried to think of Miss Biron soberly, to try to come to
some sort of an estimate of her character, he was altogether at a
loss. Her tears, her terrors, her smiles, her little airs, all seemed to
succeed each other as rapidly as if she had been still a child. No
emotion seemed to be able to endure in her volatile nature. He
doubted, considering the matter in cold blood, whether this was a
characteristic he admired; yet there it was, and his infatuation
remained.
With all her limitations, whatever they might be; with all her faults,
whatever they were, Miss Claire Biron had permanently taken her
place in Bram’s narrow life as the nearest thing he had ever seen to
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like