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….
Infovalutar
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)
( You can see the sources at https://github.com/ignatandrei/InfoValutar/ )
Leave a Reply