gpt4 book ai didi

c# - 难以设置 c# "friend"与 InternalsVisibleTo 的关系

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:15 24 4
gpt4 key购买 nike

我正在尝试建立从名为 MyObject 的类到 MemoryManager 的 friend 关系。意思是,我希望 MemoryManager 能够访问 MyObject 中的所有 protected 元素(这样它就可以完成它的工作)。

我在一个文件中:

namespace my_namespace
{
public class MemoryManager
{
public int someMethod(MyObject o) {
int k = o._protectedCalculation();
}
}
}

在另一个文件中:

[assembly: InternalsVisibleTo("my_namespace.MemoryManager")]

namespace my_namespace
{
public class MyObject
{
protected int a;
protected int b;
protected int _protectedCalculation() { return a+b };
}
}

我认为这将允许 MemoryManager 访问 o._protectedMember,但是这给了我错误:

my_namespace.MyObject._protectedCalculation() is inaccessible due to its protection level

有没有人看到我做错了什么,或者 InternalsVisibleTo 没有做我希望它做的事?

最佳答案

protected 与 VB.NET 的“Friend”不同。由于该属性名为 InternalsVisibleTo,您应该将您的成员标记为 internal

如果你希望它既是internal又是protected,你可以使用protected internal:

protected internal int _protectedCalculation() { return a+b };

关于c# - 难以设置 c# "friend"与 InternalsVisibleTo 的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26616748/

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