對於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 ... –