C# 允许两个项目从同一债券继承
在C#项目中使用 假设我在一个项目a'中使用了一个绑定文件a',并且希望有两个项目B'和C'具有绑定文件B和C,这两个项目都具有从文件a中的结构继承的结构。我将如何做到这一点 我曾考虑创建一个ProjectReference,但它似乎只提供从这些绑定文件生成的C#类,不允许我从原始绑定文件进行绑定继承,因此我在一个项目与另一个项目之间建立了链接。不幸的是,我当前的解决方案非常容易出错,在一个项目中更改该文件位置也会破坏另一个项目C# 允许两个项目从同一债券继承,c#,inheritance,bond,C#,Inheritance,Bond,在C#项目中使用 假设我在一个项目a'中使用了一个绑定文件a',并且希望有两个项目B'和C'具有绑定文件B和C,这两个项目都具有从文件a中的结构继承的结构。我将如何做到这一点 我曾考虑创建一个ProjectReference,但它似乎只提供从这些绑定文件生成的C#类,不允许我从原始绑定文件进行绑定继承,因此我在一个项目与另一个项目之间建立了链接。不幸的是,我当前的解决方案非常容易出错,在一个项目中更改该文件位置也会破坏另一个项目 建议的方法是什么?要使绑定文件B和C继承或包含绑定文件A(在项目A
建议的方法是什么?要使绑定文件B和C继承或包含绑定文件A(在项目A')中的类型,您需要在B和C的顶部导入绑定文件A。这使A中的类型在B和C中已知 a、 债券 b、 债券 对于导入路径,您有三个选项:
import“C:/src/projectAPrime/schemas/a.bond”
import“a.bond”
,import“schemas/a.bond”的相对路径,并添加到bond导入路径:在消费项目的其他地方,您可以确保使用项目a的搜索目录扩充了
BondImportDirectory`项<ItemGroup>
<BondImportDirectory Include="$(ProjectAPrimeRoot)" />
<!-- or some other reference to project A, depending
on how your projects are structured (perhaps you
have a all_projects.props file for these sort of
variables or item modifications -->
</ItemGroup>
我不能给您比这更具体的指导,因为我不知道您的特定项目结构,而且MSBuild无法让项目“导出”引用项目自动获得的值(我知道)
请注意,您仍然需要项目a'的ProjectReference,因为在项目B'和C'中生成的代码将依赖于项目a'生成的程序集中生成和编译的代码
有关使用BondImportDirectory导入的工作示例,请参阅Bond存储库中的。但是,这并不能解决跨项目导入问题,因此您需要根据自己的情况进行调整
如果您是C++开发人员,这应该与<>代码>包含< <代码>路径> < /p>,所以实际问题在于这些项目之间如何使用这些绑定定义,而不是由它们生成的代码?@雷内-是的,问题是项目引用不允许bond编译器使用来自被引用项目的bond(至少,不是我使用它的方式),谢谢!只是要确保,答案是正确的任何进口一个债券从另一个,而不仅仅是继承,对吗?(例如,包含bond B类型字段的bond A)合成的工作方式相同。答案已经更新。
import "a.bond"
namespace B;
struct Derived : A.Base { }
struct Composition {
// notice fully qualified name is used for Base
0: A.Base has_a_base;
}
<ItemGroup>
<BondImportDirectory Include="$(ProjectAPrimeRoot)" />
<!-- or some other reference to project A, depending
on how your projects are structured (perhaps you
have a all_projects.props file for these sort of
variables or item modifications -->
</ItemGroup>