我正在尝试使用 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 的示例。
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) 我将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?
.msi我使用 Wix Toolset v3.11为我的 Windows 应用程序生成安装程序。
如何让发布者名称出现在“设置”->“应用程序和功能”中我的应用程序的条目中?
我注意到该列表中的某些条目在应用程序名称下方包含发布商名称:

<Product ... Manufacturer="My Company Name" ...我在文件中设置.wxs,可以看到它存储在注册表中,位于HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\<guid>\Publisher.
但显然这还不足以让发行商出现在节目列表中。显示发布者的应用程序(Windows 应用商店应用程序?)存储在注册表的不同部分。
inversifyjs ×1
javascript ×1
t-sql ×1
typescript ×1
windows ×1
windows-10 ×1
wix ×1
xml ×1
xsd ×1