问题描述
我对NetStandard目标平台的技术方面非常困惑。
我唯一的理解是它只是一个接口。这个概念很有意义。 但是现在这是我的第一个困惑所在:
如果开发人员在上述项目中编写实际代码,怎么可能只是一个界面?
第二个困惑:
如何以及何时解析NetStandard DLL的实际实现/ DLL?
解决方法
它不是一个“接口”,因为它只是一个与.NET Framework和.NET Core(以及其他.NET实现)兼容的标准。您仍然可以基于NetStandard编写具体的类。
您可以在此处查看NetStandard支持的所有实现:https://docs.microsoft.com/en-us/dotnet/standard/net-standard
如果您要创建一个通用库,以供基于DotNetCore,NET Framework,Mono,Xamarin等的各种应用程序使用,则这是有益的。
,我唯一的理解是它只是一个界面。
人们使用“接口”概念,因为在C#中,这显然是一个众所周知的范例,它表示“如果实现此接口,则必须提供这些方法”。
在.NET Standard上下文中使用时,它们通常并不表示文字C#接口,而是表示如果您说“我实现.NET Standard 2.1”,则表示您为所有方法提供了实现。 .NET Standard 2.1要求。
将.NET Standard视为一个庞大的C#接口,它具有成千上万种方法,这是一个简单的思考过程,您必须编写一个主体来声明您支持该版本的.NET Standard。
如果开发人员在上述项目中编写实际代码,怎么可能只是一个界面?
因为当您在.NET Standard项目/库中编写代码时,您基本上是在说:“我正在针对接口编写此代码,但是我不知道谁会调用它,只是我可以调用XYZ方法并会起作用的。”
类似于如果您正在编写一个称为接口方法的类,则无需知道该类的实现,只需要在该接口上调用该方法,它就应该起作用。
如何以及何时解析NetStandard DLL的实际实现/ DLL?
.NET标准DLL不能单独运行。它没有“运行时”。出于所有实际目的,您将发现有一个调用.NET标准库的.NET Core Web应用程序,因此它在.NET Core上下文中运行。
如果您有一个调用.NET标准库的.NET Framework Winforms项目,那么您正在.NET Framework运行时下运行。
因此,要回答您的问题,它会在运行时“解决”,具体取决于谁在调用它。