0
沒有使用簽名密鑰(.snk)有沒有辦法從另一個程序集訪問一個程序集的內部屬性?如何從另一個程序集訪問一個程序集的內部屬性而不使用InternalVisibleTo?
在此先感謝。通過強類型的代表使用時 阿倫
沒有使用簽名密鑰(.snk)有沒有辦法從另一個程序集訪問一個程序集的內部屬性?如何從另一個程序集訪問一個程序集的內部屬性而不使用InternalVisibleTo?
在此先感謝。通過強類型的代表使用時 阿倫
反思是不是太多慢...(這應該只是一點點慢於virtual
方法調用):
例子:
public class MyClass
{
internal int MyProperty { get; set; }
}
而且然後:
public static class MyClassAccessor
{
public static readonly Func<MyClass, int> GetMyProperty;
public static readonly Action<MyClass, int> SetMyProperty;
static MyClassAccessor()
{
var prop = typeof(MyClass).GetProperty("MyProperty", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
GetMyProperty = (Func<MyClass, int>)Delegate.CreateDelegate(typeof(Func<MyClass, int>), prop.GetMethod);
SetMyProperty = (Action<MyClass, int>)Delegate.CreateDelegate(typeof(Action<MyClass, int>), prop.SetMethod);
}
}
而且你使用像:
var mc = new MyClass();
MyClassAccessor.SetMyProperty(mc, 5);
Console.WriteLine(MyClassAccessor.GetMyProperty(mc));
感謝您的明確解釋 –
使用反射? – xanatos
是的,它應該是有效的 –
反射可以支持到一個強類型的代表...它的速度應該類似於「虛擬」調用。 – xanatos