小编Hit*_*ama的帖子

Visual Studio 2022 如何确定用于智能感知的目标 TypeScript 版本

我正在使用 Visual Studio 2022 处理现有解决方案,其中包含带有节点应用程序的 Web 项目。

该应用程序在文件中配置package.json为使用 TypeScript 3.8.3 npm 包。在 TypeScript 文件中,我使用自 TypeScript 3.7 版以来应支持的可选链接语法,但 ide 将其强调为错误“TS1109:预期表达式”。如果重要的话,节点版本是 14.17.0。全局未安装 Typescript 版本。

该页面指出

默认情况下,Visual Studio 2022 为 JavaScript 和 TypeScript 文件提供语言支持,无需任何特定的项目配置即可支持 IntelliSense

对于编译 TypeScript,Visual Studio 使您可以灵活地选择在每个项目的基础上使用哪个版本的 TypeScript。

在 MSBuild 编译场景中,推荐使用 TypeScript NuGet 包向项目添加 TypeScript 编译支持。第一次将 TypeScript 文件添加到项目时,Visual Studio 将为您提供添加此包的选项。也可以随时通过 NuGet 包管理器获取此包。当使用NuGet包时,项目中将使用对应的语言服务版本进行语言支持。注意:此软件包的最低支持版本是 3.6。

配置了 npm 的项目可以通过添加 TypeScript npm 包来指定自己的 TypeScript 语言服务版本。您可以在支持的项目中使用 npm 管理器指定版本。注意:此软件包的最低支持版本是 2.1。

Visual Studio 2022 中已弃用 TypeScript SDK。依赖于 SDK 的现有项目应升级为使用 NuGet 包。对于无法立即升级的项目,SDK …

intellisense typescript visual-studio-2022

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

在expando对象上定义计算属性

我正在使用expando对象,我正在尝试定义计算属性.

我知道我可以通过执行以下操作来定义一个简单的属性:

dynamic myExpando = new ExpandoObject();
myExpando.TheAnswerToLifeTheUniverseAndEverything= 42;
Run Code Online (Sandbox Code Playgroud)

同样,我也可以定义一个方法:

myExpando.GetTheQuestion = ((Func<string>)(() =>
        {
            return "How many road must a man walk down before we can call him a man?";
        }));  
Run Code Online (Sandbox Code Playgroud)

使用标准对象时,我们可以定义计算属性,即定义将返回自定义方法/计算结果的属性.不需要一个例子.

我需要在我的expando上做类似的事情 - 拥有一个实际调用"Func"的属性(或者其他形式的委托,只要我可以调用自定义方法并且具有自定义返回类型,任何事情都会发生).所以基本上我需要像第二个例子那样调用一个方法,但是它有点像属性一样工作.

基本上我需要能够用myExpando.GetTheQuestion而不是myExpando.GetTheQuestion()来调用它,同时保持定义自定义委托作为属性体的能力.

有没有办法做到这一点?我相信我可以通过使用表达式树做到这一点,但我承认我在那里有点失落.谁能提供一些如何实现这一目标的指导?


编辑

做了一些更多的研究..除非有一些非常具体的类/接口/ sintax,我不知道我开始认为上述是不可能的.从我得到的,ExpandoObject类的工作原理是定义一些执行后台管道的方法 - TryGetMember,TrySetMember等.现在,在动态对象上"访问属性"时,TryGetMember是被调用的成员.该成员从一种内部字典返回一个值(是的,我知道......这有点简化,但应该给出这个想法)......没有对返回的值类型进行测试.这意味着在我的示例中myExpando.GetTheQuestion将返回原始Func.

看来,由于TryGetMember只返回一个值,因此无法使其"执行"属性代码.要实现这一点,您需要某种表达式/ lambda/func/action代理,该值实际上是方法的结果.这似乎是不可能的(除非我错过了某些东西,否则也没有多大意义 - 基本上你会有一个设置为'委托'的值,然后作为委托返回值得到???).我是正确还是这个还是我遗失了什么?

c# dynamic expandoobject

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

将RGBW颜色转换为标准RGB/HSB表示

我正在为家庭自动化系统中的灯光管理构建一个界面.我设法控制各种供应商的标准开/关和可调光,几乎没有问题,但现在我遇到了与RGB灯有关的问题.

我目前使用的是RGBW LED灯条 - 具体来说,我正在使用低成本的RGBW灯:灯由四个LED组成,每个LED都可以单独控制.

为了更清楚 - 我正在研究一些c#代码,它们应该检索当前选择的颜色并在UI中显示它,并使用户能够指定灯光的新颜色.为了设置颜色并检索它,我必须使用命令提供程序,使我能够通过Web服务发送和接收命令.

提供商使用RGBW颜色 - 使用红色,绿色,蓝色和白色四个组件.为了表示我界面上的当前灯光颜色,我想将服务返回的RGBW颜色转换为更标准的RGB/HSB方案.

搜索网页,我找到的唯一的颜色转换参考(不包括rgb到rgbw转换的c ++示例,基于我的理解,必须有一些严重的错误)本文显示了从HSI到RGBW的转换,这是与我需要的相反:链接在这里

我正在寻找一些关于如何实现这种转换的见解(或者为什么不可能的简单解释).就我而言,从RGB到RGBW的转换是任意的 - 单个RGB值可以表示为多个RGBW值,但相反的转换应该是单义的.另请注意,虽然我使用的是c#,但也可以自由地引用其他语言的算法 - 语言不是问题,问题是我不知道数学做颜色转换.

rgb colors hsb color-theory

6
推荐指数
2
解决办法
7330
查看次数