小编Tim*_*m S的帖子

在摩纳哥编辑器中显示错误的快速修复

我正在尝试使用 Monaco 作为自定义语言的编辑器。

我使用此代码在操场上显示示例错误(省略了某些部分):

const editor = monaco.editor.create(<omitted>);
const model = editor.getModel();
model.onDidChangeContent(event => {
   const value = model.getValue();
   const errors = GetErrors(value); // Implementation of GetErrors() not shown here

    monaco.editor.setModelMarkers(model, "Example", errors);
});
Run Code Online (Sandbox Code Playgroud)

这会导致编辑器中出现所需的错误:

错误悬停

如何快速修复该错误?(而不是“没有可用的快速修复”)

我已经看过了,monaco.languages.registerCodeActionProvider()但我不明白这与错误检测代码有什么关系。

更一般地说,我一直在努力寻找使用 Monaco 实施 Quick Fix 的示例。

javascript monaco-editor

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

使用SQL Server 2008中在运行时指定的XSD验证XML?

SQL Server 2008允许我们通过定义类型化的XML列/变量来对照现有XML架构集合来验证XML: DECLARE @TypedXml XML(MyXmlSchemaCollection)

但是,据我所知,在定义列/变量时必须知道XML Schema Collection。

有没有一种方法可以使用运行时指定的XML模式来验证XML ?

例如:

DECLARE @Xml XML
SET @Xml = 
N'<person>
    <firstname>Ming</firstname>
    <lastname>The Merciless</lastname>
</person>'

DECLARE @Xsd XML
SET @Xsd =
N'<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
      <xs:element name="dateofbirth" type="xs:date"/>
    </xs:sequence>
  </xs:complexType>
 </xs:element>
</xs:schema>'

DECLARE @Valid BIT
SET @Valid = (SELECT dbo.f_ValidateXmlAgainstXsd(@Xml, @Xsd)) -- With a user-defined function?
EXEC @Valid = s_ValidateXmlAgainstXsd @Xml, @Xsd -- With a stored procedure?
Run Code Online (Sandbox Code Playgroud)

xml t-sql xsd sql-server-2008

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

InversifyJS 中带有参数的工厂

我将InversifyJS与 TypeScript 结合使用。

假设我有一个类,其中混合了注入和非注入的构造函数参数:

@injectable()
export class MyClass {
    constructor(
      foo: Foo, // This thing isn't injectable
      @inject(Bar) bar: Bar // This thing is
   ){
      ...
   }
}
Run Code Online (Sandbox Code Playgroud)

我想将此类的工厂注入到其他类中,然后使用第一个参数的值调用它。

@injectable()
export class SomeOtherClass {
   constructor(
      @inject("Factory<MyClass>") myClassFactory: (foo: Foo) => MyClass
   ){
      const someFoo = new Foo();
      const myClass = myClassFactory(someFoo);
   }
}
Run Code Online (Sandbox Code Playgroud)

我的问题:Inversify 中是否有一些自动魔法可以让我注入这个工厂?

到目前为止我想出的最好的办法是:

bind<interfaces.Factory<MyClass>>("Factory<MyClass>").toFactory(context =>
    (foo: Foo) => 
        new MyClass(foo, context.kernel.get<Bar>(Bar))
);
Run Code Online (Sandbox Code Playgroud)

但这意味着我明确地new()-ingMyClass并且每个新的可注入依赖项MyClass也必须在这里添加。

有没有更好的办法?也许是基于参数名称的东西,比如Ninject Factory Extensions

dependency-injection typescript inversifyjs

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

在已安装程序列表中显示发布者名称

.msi我使用 Wix Toolset v3.11为我的 Windows 应用程序生成安装程序。

如何让发布者名称出现在“设置”->“应用程序和功能”中我的应用程序的条目中?

我注意到该列表中的某些条目在应用程序名称下方包含发布商名称: 带有发布者名称的应用程序

<Product ... Manufacturer="My Company Name" ...我在文件中设置.wxs,可以看到它存储在注册表中,位于HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\<guid>\Publisher.

但显然这还不足以让发行商出现在节目列表中。显示发布者的应用程序(Windows 应用商店应用程序?)存储在注册表的不同部分。

windows windows-installer wix windows-10

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