我有一个项目,它从私有NuGet提要中使用NuGet包.我还在一个单独的项目/解决方案中有该包的源代码.当我在项目上工作时,我希望能够暂时将所提到的包源代码添加到解决方案中,这样我就可以同时处理项目和nuget包中的更改.
在Visual Studio 2015中,使用dotnet core和project.json/global.json,我可以将NuGet包添加到项目中,然后修改global.json以包含磁盘中的源.
global.json:
{
"projects" : [ "src", "../<path_to_external_source>/src" ]
}
Run Code Online (Sandbox Code Playgroud)
这会暂时改变对磁盘上项目的引用.在推送到构建服务器之前,我只需从global.json中删除一行并从解决方案中删除项目.
在Visual Studio 2017和基于csproj的dotnet核心中我似乎无法获得该功能.我必须删除nuget包,通过"添加/现有项目"手动添加源代码到解决方案,然后手动添加引用而不是删除NuGet引用.然后在推送构建服务器之前反转所有这些.
当解决方案有几个项目消耗NuGet包时,这尤其成问题,我需要对每个项目进行处理.
有没有办法在VS17中重现global.json的功能?
我的班级结构(简化)
interface Foo<T> { }
abstract class Bar1 : Foo<SomeClass> { }
abstract class Bar2 : Foo<SomeOtherClass> { }
class FinalClass1 : Bar1 { }
class FinalClass2 : Bar2 { }
Run Code Online (Sandbox Code Playgroud)
现在,只有类型FinalClass1和FinalClass2,我需要从Foo接口获取它们各自的T类型 - FinalClass1的SomeClass和FinalClass2的SomeOtherClass.抽象类可以实现更通用的接口,但始终只有一个Foo.
如何使用反射来实现这一目标?
无论T是什么类型,我怎样才能确保类型实现Foo?就像是
bool bIsFoo = typeof(SomeType).IsAssignableFrom(Foo<>)
以上不起作用.