Blazor - 私有组件

imb*_*b13 6 c# .net-core blazor-server-side

有没有办法为正在使用的项目创建一个私有的 Blazor 组件?

例如,让我们看一下ProjectOne包含两个组件的Razor 类库: omponentComponentA和 component ComponentB。该组件ComponentB是component的子级ComponentA

ProjectOne 结构体:

一号计划

- - 成分

---------- ComponentA.razor

---------- ComponentB.razor

还有另一个项目是 Blazor 应用程序ProjectTwo。在这个项目中有一个参考ProjectOneComponentA在 razor 页面中调用组件时,子组件ComponentB也是可见和可访问的。

有没有办法ComponentB只为ProjectOne在组件中使用它的项目在内部创建这个子组件ComponentA

Nei*_*l W 5

由于看起来子组件需要公开,而不是将其放在另一个项目中,所以我只是将其放在更深的命名空间中。

如果我想要公开公开的根组件位于

MyApp.Components.Widget
Run Code Online (Sandbox Code Playgroud)

然后我将子组件放入

MyApp.Components.Widget.Internal
Run Code Online (Sandbox Code Playgroud)

无需另一个项目即可实现与先前答案的建议类似的结果,因为我们能做的最好的事情就是混淆它,而不是使其成为“内部”或“私有”。


ker*_*ode 0

可能不理想,但创建另一个项目来支持您的公共项目,并且仅由您的公共项目引用。您的消费项目仅引用您的公共项目。因此,对于您的示例,它将更改为...

  • 项目二(应用程序项目)
    • ProjectOne(Api组件项目)
      • ProjectOneInternalUse(API使用的支持项目)

(不幸的是,您仍然需要引用 ProjectTwo (应用程序项目)中的“内部使用”项目,但至少它将在命名空间内的命名中被标记为内部)