在以前的开发中,我使用了一个可移植类库来共享Windows 8.1"Metro"应用程序和.NET/WPF桌面应用程序之间的代码.
Windows 10 Universal类库是否也可以从这些桌面应用程序中使用,如果没有,在这种情况下共享代码的推荐方法是什么?
我正在使用"黑暗"主题开发一个Windows应用商店应用,它适用于应用程序的主体.但是,对于设置弹出窗口,我想匹配系统提供的"权限"弹出窗口的外观,也就是说,白色为黑色.
不幸的是,在操作中使用Dark主题的每个控件都很难设置.
有没有办法使用"Light"主题,覆盖应用程序默认值,用于我用于我的设置窗格的UserControl,或者是执行此操作以复制主题文件的所有相关块的唯一方法进入UserControl的资源?
我刚刚开始使用F#,而且关于投射的一些问题让我非常困惑.不幸的是,我的背景阅读试图弄清楚为什么让我更加困惑,所以我正在寻找一些具体的答案,我可以适应一般的解释......
我有一个由此函数生成的枚举的ReadOnlyCollection <'T>:
let GetValues<'T when 'T :> Enum> () =
(new ReadOnlyCollection<'T>(Enum.GetValues (typeof<'T>) :?> 'T[])) :> IList<'T>
Run Code Online (Sandbox Code Playgroud)
我想要做的是找到其值所使用的枚举的所有位(即,按位或列表中的所有值),并将其作为通用枚举类型返回,'T.这样做的显而易见的方法似乎是:
let UsedBits<'T when 'T :> Enum> () =
GetValues<'T>()
|> Seq.fold (fun acc a -> acc ||| a) 0
Run Code Online (Sandbox Code Playgroud)
...除了无法编译之外,错误"此处不能使用声明的类型参数'T',因为在编译时无法解析类型参数."
我可以通过首先转换为Int32来完成实际的工作(我真的不想这样做,因为我希望这个函数适用于所有枚举而不管底层类型),即:
let UsedBits<'T when 'T :> Enum> () =
GetValues<'T>()
|> Seq.map (fun a -> Convert.ToInt32(a))
|> Seq.fold (fun acc a -> acc ||| a) 0
Run Code Online (Sandbox Code Playgroud)
...但是然后结果产生为Int32.如果我尝试将其强制转换为'T,我再次遇到编译错误.
我不想在我的问题中过于具体,因为我不确定我应该询问哪些细节,所以 - 这种方法的缺陷在哪里?我该怎么办呢?
(编辑补充:,@ @ Daniel的回答
唉,这似乎是我不能理解上下文以便理解答案的情况之一,所以...
我想我理解内联和不同的约束在你的答案中做了什么,但作为一个F#新手,你是否会介意对这些事情进行一些扩展,以便我可以检查一下我的理解是不是基于什么?谢谢.
)
我正在使用 PowerShell.Exiting 引擎事件来保存我的命令历史记录并在我关闭 PowerShell 会话时进行一些其他整理,从而将其注册到我的配置文件中:
# Set up automatic functionality on engine exit.
Register-EngineEvent PowerShell.Exiting -SupportEvent -Action `
{
#stuff
...
}
Run Code Online (Sandbox Code Playgroud)
当我在控制台窗口中使用 PowerShell 时,这非常有效,但是当我在 ISE 中运行 PowerShell 时,PowerShell.Exiting 事件似乎永远不会触发,因为我没有放入任何东西,无论是通常的东西还是测试代码,曾经运行。
这是一个已知问题,如果是,是否有已知的解决方法或替代方法?