Loading data from NBR / ECB as plugins–part 11

Modified project – instead of one project that have the NBR and ECB exchange rates,I have now 4
1. Common interfaces / classes

2 NBR loading( first plugin)

3 ECB loading ( second plugin)

4 plugin loading project

 

Going to .NET Standard 2.1 and trying to load the NuGet https://github.com/natemcmaster/DotNetCorePlugins/blob/master/docs/what-are-shared-types.md .

Does not load. Going back to .NET Core 2.0  – some result.

RTFM – not supported .NET Standard  https://github.com/natemcmaster/DotNetCorePlugins/issues/24

So created a .NET Standard dll and changed from

<TargetFramework>netstandard2.0</TargetFramework>

to

<TargetFramework>netcoreapp3.0</TargetFramework>

Copied the code from https://github.com/natemcmaster/DotNetCorePlugins/blob/master/samples/hello-world/HostApp/Program.cs .

Loaded 0 plugins.

Put plugins in plugins directory – again 0 plugins.

Read the code copied – I must create separate folders for each plugin – makes sense, because we can have plugin diamond dependency – see here https://github.com/natemcmaster/DotNetCorePlugins/blob/master/docs/what-are-shared-types.md

Put in separate folder – error in this line

// This assumes the implementation of IPlugin has a parameterless constructor
var plugin = Activator.CreateInstance(pluginType) as BankGetExchange;

 

Apparently , this code does NOT mean to have a parameterless contructor – even if seems from the code


public class GetNBRExchange: BankGetExchange
{
private readonly HttpClient httpClient;

public GetNBRExchange(HttpMessageHandler handler = null)
{
if (handler != null)
httpClient = new HttpClient(handler, disposeHandler: false);
else
httpClient = new HttpClient();
}

 

So small modification to preserve tests and default code:


public class GetNBRExchange: BankGetExchange
{
private readonly HttpClient httpClient;
public GetNBRExchange() : this(null)
{

}
public GetNBRExchange(HttpMessageHandler handler)
{
if (handler != null)
httpClient = new HttpClient(handler, disposeHandler: false);
else
httpClient = new HttpClient();
}

Now it works …

You can find modifications here

https://github.com/ignatandrei/InfoValutar/commit/0e4cf6b83bb5f4cbab71e9e8c96ae719771fcae1 – total 13 changed files….

And one hour passes...

(This is the result of 1 hour per day auto-challenge as a full cycle developer for an exchange rates application)
NrPost 
1Start
2Reading NBR from internet
3Source control and build
4Badge and test
5CI and action
6Artifacts and dotnet try
7Docker with .NET Try
8ECB
9Intermezzo - Various implementations for programmers
10Intermezzo - similar code - options
11Plugin implementation
12GUI for console
13WebAPI
14Plugin in .NET Core 3
15Build and Versioning
16Add swagger
17Docker - first part
18Docker - second part
19Docker - build Azure