Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DLL延迟加载_C#_Lazy Loading_Class Library - Fatal编程技术网

C# DLL延迟加载

C# DLL延迟加载,c#,lazy-loading,class-library,C#,Lazy Loading,Class Library,我有一个复杂的.NET类库,它依赖于其他几个.NET类库,但并不是所有的类库都在每种情况下使用。有没有办法将它们标记为“延迟加载”,以便我可以在知道它根本没有被使用时将其从文件夹中删除?所有程序集都是按需加载的。如果从文件夹中删除程序集,应用程序将一直工作到需要加载该程序集的位置。通常,程序集是惰性加载的,但您似乎需要确保这一点。好问题!但“需求状况”究竟何时发生?可能是在第一次执行来自该程序集的代码之前。当需要加载来自该程序集的类型时,通常会出现需求情况。是的,它发生在代码实际执行之前。(我几

我有一个复杂的.NET类库,它依赖于其他几个.NET类库,但并不是所有的类库都在每种情况下使用。有没有办法将它们标记为“延迟加载”,以便我可以在知道它根本没有被使用时将其从文件夹中删除?

所有程序集都是按需加载的。如果从文件夹中删除程序集,应用程序将一直工作到需要加载该程序集的位置。

通常,程序集是惰性加载的,但您似乎需要确保这一点。好问题!但“需求状况”究竟何时发生?可能是在第一次执行来自该程序集的代码之前。当需要加载来自该程序集的类型时,通常会出现需求情况。是的,它发生在代码实际执行之前。(我几乎可以肯定的是,在一个方法可以运行之前,必须加载该方法引用的所有类型-例如,如果您放置一个方法
对象GetIfAvailable(bool isAvailable){if(isAvailable)return new Unavailable();}
-如果未找到
Unavailable
类型,即使该类型未实际使用,该方法也不会运行,方法是使用
false
参数调用它。)@jeanhomial,回答得好。我测试了它,它真的像你描述的那样工作。这种行为正是我所需要的。谢谢。希望事情真的这么简单。如果没有,OP的应用程序将在程序中的任意点中断。如果不将“复杂的.NET类库”重新构造为多个具有定义良好的依赖集的小型库,我肯定不会做OP所做的事情。