对于C#中的跨平台库,我希望为了可扩展性的目的而具有一组标记为保护的方法。这些方法后来被反射访问,使用元编程与属性使用#if和#define指定访问者
然而,在Windows Phone 7的反射访问保护方法是不允许的,而是我希望为他们标记的内部。
所以我想知道的是,如果我可以这样做,在C#中,或者如果有更好的解决方法吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
#if WINDOWS_PHONE
#define ACCESSOR internal
#else
#define ACCESSOR protected
#endif
namespace Example
{
public class MyTestClass
{
[MyAttribute]
ACCESSOR void MyMethod()
{
}
}
}
嗯,如果该成员被标记为受保护的,那么我会得到一个安全异常。所以除非“受保护的内部”并不意味着它受到保护,否则我不确定它会有什么区别。再次,将它们标记为内部意味着其他程序集没有可扩展性(这违背了整个想法) –
'protected internal'意味着它受到保护或者是内部的。试一试。 –
是的,这是OR ... –