Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.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# 返回或继承包含嵌套类的泛型_C#_Generics_Nested Generics - Fatal编程技术网

C# 返回或继承包含嵌套类的泛型

C# 返回或继承包含嵌套类的泛型,c#,generics,nested-generics,C#,Generics,Nested Generics,我注意到,在使用如下所示的类布局时,出现了一些非常奇怪的行为: // Contents of assembly A: public class MyParentClass { public class NestedClass { } } // Contents of assembly B: public class AnotherClass : List<MyParentClass.NestedClass> { } //程序集A的内容: 公共类MyPare

我注意到,在使用如下所示的类布局时,出现了一些非常奇怪的行为:

// Contents of assembly A:
public class MyParentClass
{
    public class NestedClass
    {
    }
}

// Contents of assembly B:
public class AnotherClass : List<MyParentClass.NestedClass>
{
}
//程序集A的内容:
公共类MyParentClass
{
公共类嵌套类
{
}
}
//大会B的内容:
公共类另一个类:列表
{
}
我可以将程序集A添加为程序集B的依赖项。此示例将在编译时不显示任何错误消息,但当涉及到(例如)加载程序集B作为单元测试的引用时,我将在编译单元测试时收到此错误:

无法加载文件或程序集“AssemblyB,版本=1.0.0.0,区域性=中性, PublicKeyToken=null'或其依赖项之一。系统找不到 指定的文件

这段代码生成的程序集确实有效,我可以使用Redgate Reflector运行生成的DLL,并按预期查看我的代码,但单元测试拒绝加载它

我几乎可以肯定的是,这个问题与我调用另一个程序集中的嵌套类有关,我可能最终会重构这个设计,但我真的很想知道为什么这不能像预期的那样工作。如果以这种方式使用类时出现问题,我希望编译器抛出异常


谢谢您的时间。

是否为该引用启用了“本地复制”?我假设您的测试项目测试程序集B没有程序集a的副本。在引用中将“copy Local”设置为true应该复制程序集,以便在编译(并最终运行)测试时可以正确找到它们。

是否为该引用启用了“copy Local”?我假设您的测试项目测试程序集B没有程序集a的副本。在引用中将“copy Local”设置为true应该复制程序集,以便在编译(并最终运行)时可以正确找到它们测试。

我怀疑这是否与嵌套类有关——只是.NET中缺少可传递的依赖关系

基本上,如果要在一个项目中使用另一个类,则需要显式地添加对
AssemblyB
AssemblyA
的引用。这样,两者都应该被适当地复制和加载


如果这没有帮助,你可以试试。

我怀疑这与嵌套类有什么关系——只是缺少.NET中出现的可传递依赖关系

基本上,如果要在一个项目中使用另一个类,则需要显式地添加对
AssemblyB
AssemblyA
的引用。这样,两者都应该被适当地复制和加载


如果没有帮助,您可以尝试。

如果您的项目将目标框架设置为“框架4客户端配置文件”,并且链接的dll具有目标框架“框架4”,则在visual studio 2010中会收到此错误消息


请在项目设置中进行检查。

如果项目的目标框架设置为“framework 4客户端配置文件”,并且链接的dll具有目标框架“framework 4”,则在visual studio 2010中会收到此错误消息


在项目设置中检查此项。

是否在单元测试程序集中加载程序集A和B的同时?是否在单元测试程序集中加载程序集A和B的同时?实际上,程序集B也加载了单元测试项目。在所有情况下,“Copy Local”都设置为True,因此我认为这不是问题所在。好主意。实际上,程序集B也加载了单元测试项目。在所有情况下,“Copy Local”都设置为True,因此我认为这不是问题所在。好主意。我所有的项目都以“.NETFramework 4”为目标。无论如何,谢谢:)我所有的项目都以“.NETFramework 4”为目标。无论如何谢谢:)我在单元测试项目中添加了对这两个程序集的引用,所以这不是问题所在。绑定日志窗口中也没有出现任何东西,但我以前从未遇到过该工具,所以这仍然是我学到的新东西。谢谢你!我上次检查(几年前)Fuslogvw.exe时有点僵硬。所以我宁愿将我的fusion日志假脱机到某个文件夹中。更改“HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Fusion”,将ForceLog和LogFailures设置为1,并将LogPath=C:\Temp\FusionLog设置为1,然后创建该文件夹。我在单元测试项目中添加了对这两个程序集的引用,因此这不是问题所在。绑定日志窗口中也没有出现任何东西,但我以前从未遇到过该工具,所以这仍然是我学到的新东西。谢谢你!我上次检查(几年前)Fuslogvw.exe时有点僵硬。所以我宁愿将我的fusion日志假脱机到某个文件夹中。更改“HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Fusion”,将ForceLog和LogFailures设置为1,并将LogPath=C:\Temp\FusionLog并创建该文件夹。