我想建立一個名爲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