我想建立一个名为MyObject的类到MemoryManager的朋友关系。这意味着,我希望MemoryManager能够访问MyObject中的所有受保护的元素(以便它可以完成它的工作)。难以设置c#“朋友”关系InternalsVisibleTo
我有一个文件:
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
有没有人看到我在做什么错,还是InternalsVisible不做我希望的事d OES?
['InternalsVisibleTo'](http://msdn.microsoft.com/en-us/library/system .runtime.compilerservices.internalsvisibletoattribute.aspx)给标记为'internal'的成员提供了一个不同的* assembly *访问权限(通常只在其自己的程序集中可见)。它没有做任何关于'protected'的事情。 – Blorgbeard 2014-10-28 19:22:52
“内存管理器”类可能更适合简单地使用反射访问私有/受保护成员。但是你知道C#已经为你管理内存了,对吧? – Blorgbeard 2014-10-28 19:29:04