gpt4 book ai didi

c# - 如何从另一个程序集中的内部接口(interface)派生

转载 作者:行者123 更新时间:2023-11-30 19:04:07 26 4
gpt4 key购买 nike

我是 C# 新手,所以请多多包涵。

好的,所以我在不同的程序集中有两个类需要相互引用:

namespace AssemblyA
{
class A
{
private B MyB { get; set; }
}
}

namespace AssemblyB
{
class B
{
private A MyA { get; set; }
}
}

我知道循环引用是不允许的,所以我使用了一个接口(interface):

namespace AssemblyA
{
public interface IB
{
// whatever 'A' needs of 'B'
}

class A
{
private IB MyB { get; set; }
}
}

namespace AssemblyB
{
class B : AssemblyA.IB
{
private A MyA { get; set; }
}
}

这可行,但它的缺点是它会将 IB 暴露给世界其他地方。我想做的是制作 IB internal。但是 B 不能从它派生。

在 C++ 中,我会让 B 成为 friend 并完成。我知道 C# 没有 friend (双关语不是故意的,但注意到了),所以我不得不凑合。 我读到有一个属性,但这将使整个程序集 A 可供整个程序集 B 访问,我不知道不喜欢。 有办法避免这种情况吗?

最佳答案

您实际上被误导了——C#/.NET 确实支持友元程序集。您要将两个程序集标记为 Friend Assemblies ,MSDN 定义如下:

An internal type or internal member in an assembly can be accessed from another assembly.

因此,只需将以下属性放置在项目代码文件之一的任意位置(我会选择 AssemblyInfo.cs)。

[assembly:InternalsVisibleTo("name_of_friend_assembly")]

关于c# - 如何从另一个程序集中的内部接口(interface)派生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1341887/

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