小编kub*_*i98的帖子

Windows 10 Mobile - 无法隐藏状态栏(上下文中不存在StatusBar)

我试图在我的Windows 10 Universal App中隐藏状态栏.在WP 8.1中,我StatusBar.GetForCurrentView().HideAsync();用来隐藏状态栏,但这不适用于我当前的项目(Monogame,Win10 UAP) - 我在当前上下文中找不到"StatusBar"错误(是的,我正在使用Windows. UI.ViewManagement).我做错了什么,或者这个删除StatusBar的选项被删除了吗?我应该如何在W10M中完成这项工作?提前致谢.

windows statusbar

7
推荐指数
1
解决办法
3954
查看次数

在 C# 中调用受保护的方法 - 反射还是单独的派生类?

我最近发现自己需要从类外部调用受保护的方法(原因很简单:我需要阻止对象在其值更改时触发 OnValueChanged 事件,这只能通过其受保护的 Set(value, sendCallback ) 功能)。

最后我想出了两个解决方案:

1.) 创建一个派生类,并且只添加这个函数:

public void SetValue (float val, bool callback) { Set(val, callback); }
Run Code Online (Sandbox Code Playgroud)

幸运的是,这个类被设置为可继承的,所以它起作用了。

2.) 使用反射和扩展方法并执行以下操作:

public static void SetValue(this Slider slider, float val, bool callback)
    {
        MethodInfo sliderSetMethod = slider.GetType().GetMethod("Set", BindingFlags.NonPublic | BindingFlags.Instance);
        sliderSetMethod.Invoke(slider, new object[] { val, callback });
    }
Run Code Online (Sandbox Code Playgroud)

这也很好用。有什么理由我应该使用一种或另一种吗?它们现在都运行良好,但它们显然不是真正干净的解决方案,所以我想知道它们中的任何一个将来是否会导致问题。

c# reflection inheritance extension-methods encapsulation

1
推荐指数
1
解决办法
578
查看次数