gpt4 book ai didi

c# - 避免或修复 .Net Core 中的 namespace 污染

转载 作者:行者123 更新时间:2023-11-30 16:38:18 25 4
gpt4 key购买 nike

总结

对于我的 CS 顶点项目,我们遇到了一个类名存在于两个不同依赖项中的问题。具体来说,我们使用一个依赖项将 MySQL 与 Entity Frame 一起使用,一个用于直接连接和执行 MySQL 查询。

背景

非EF归项目外的一个组件所有,这个数据库是我们与数据库交互的主要方式之一。客户/导师要求我们需要对单独的数据库进行任何添加或更改,这是 EF 正在连接的数据库。

问题

我的问题本质上是关于如何修复错误 the type <class-name> exists in both... ,但我更想知道 .Net Core 中命名空间污染的根本问题以及我们可以采取的行动方案。我已经调查了错误,初步结果描述了一个仅适用于 .Net 而不是 .Net Core 的修复程序以及 .Net Core 不支持别名的解释。

潜在修复

  • 单独的项目 - 我问过一个我认识的人,他对 .Net 有更多的经验,他建议制作单独的项目。虽然这显然可以消除构建错误,但我不知道我们如何在主 ASP.Net 应用程序中使用它。我假设要么两者都需要成为应用程序,要么将其中一个变成一个库。我还假设如果它是一个单独的库,它会遇到我们现在遇到的同样问题。

  • 删除一个依赖项 - 我目前正在考虑不太理想的解决方案是重写依赖于 EF 的代码以使用直接 MySQL 连接依赖项。依赖该 EF 数据库的代码较少,因此重写该数据库和一些 SQL 会更简单。

  • 别名或完整引用 - 我发现的结果似乎只适用于 .Net 描述使用别名或引用类型中正统的完整路径。据我所知,.Net Core 目前不支持这一点。如果是,我该如何处理?

using System;
using System.Collections.Generic;
using MySql.Data.MySqlClient;

namespace OVD.API.GuacamoleDatabaseConnectors
{
public class GuacamoleDatabaseConnector : IDisposable
{

private MySqlConnection connection;
...

错误出在 MySqlConnection 类型上,完整的错误是:GuacamoleDatabaseConnectors/GuacamoleDatabaseConnector.cs(81,16): error CS0433: The type 'MySqlConnection' exists in both 'MySql.Data, Version=8.0.15.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' and 'MySqlConnector, Version=0.49.2.0, Culture=neutral, PublicKeyToken=d33d3e53aa5f8c92' [/Users/markbeussink/Action/OVD/OVD.API/OVD.API.csproj]

这是 .cs.proj

<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App"/>
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All"/>
<PackageReference Include="Ldap.NETStandard" Version="1.0.3"/>
<PackageReference Include="MySql.Data" Version="8.0.15"/>
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.2.0"/>
</ItemGroup>
</Project>

最佳答案

只需创建一个新项目“类库”,在这个项目中,您可以创建一个接口(interface),让您可以访问您的组件之一的方法(您需要在该项目中实现您的“组件”及其方法) .类似于立面图案。然后在您的解决方案的其余部分,您将仅使用新创建的项目引用。此解决方案允许您定义自己的命名空间名称

关于c# - 避免或修复 .Net Core 中的 namespace 污染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55424655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com