我发现自己经常做以下事情,我觉得必须有一个自动解决方案:
我有一个包装类,比如ListWrapper,它包装了一个IList:
public class ListWrapper : IList
{
private IList _list;
// ... Implement IList by redirecting every call to _list
}
Run Code Online (Sandbox Code Playgroud)
有没有可以自动生成此实现的工具?
有没有办法将index属性委托给typescript中的成员?我正在编写一个包装器,我想将index属性委托给我正在包装的对象.
就像是:
interface MyStringArray {
length : number;
clear() : void;
[index: number] : string;
}
export class MyStringArrayWrapper implements MyStringArray {
private wrapped : MyStringArray;
public get length() : number {
return this.wrapped.length;
}
public clear() : void {
this.wrapped.clear();
}
// This doesn't work
public get [index : number] : string {
return this.wrapped[index];
}
// This doesn't work either
public set [index : number](value: string) {
this.wrapped[index] = value;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用mat-menu构建一个上下文菜单,我觉得我非常接近.我希望菜单弹出用户右键单击的位置.问题是它会弹出用户最后右键单击的位置,而不是它们当前右键单击的位置.我该如何解决?
HTML:
<span #contextMenuTrigger [matMenuTriggerFor]="contextMenu" class="context-menu-trigger" [style.left.px]="menuLeft" [style.top.px]="menuTop"></span>
<div (contextmenu)="openContextMenu($event)> stuff that I want right-click available to goes here</div>
<mat-menu #contextMenu="matMenu">
<button mat-menu-item>Item 1</button>
<button mat-menu-item>Item 2</button>
</mat-menu>
Run Code Online (Sandbox Code Playgroud)
CSS:
.context-menu-trigger { position: absolute }
Run Code Online (Sandbox Code Playgroud)
TS:
...
@Component( ... )
export class AppComponent {
@ViewChild(MatMenuTrigger) public menuTrigger : MatMenuTrigger;
public menuLeft = 0;
public menuTop = 0;
...
openContextMenu(event) {
event.preventDefault();
this.menuLeft = event.x;
this.menuTop = event.y;
this.menuTrigger.openMenu();
}
}
Run Code Online (Sandbox Code Playgroud)
我们目前在@angular 4.4和@ angular/material 2.0.0-beta.12.
为什么以下测试失败?
[TestClass]
public class DynamicTests
{
public class ListOfIntsTotaller
{
public float Total(List<int> list) { return list.Sum(); }
}
public static class TotalFormatter
{
public static string GetTotal(IEnumerable list, dynamic listTotaller)
{
// Get a string representation of a sum
return listTotaller.Total(list).ToString();
}
}
[TestMethod]
public void TestDynamic()
{
var list = new List<int> { 1, 3 };
var totaller = new ListOfIntsTotaller();
Assert.AreEqual("4", totaller.Total(list).ToString()); // passes
Assert.AreEqual("4", TotalFormatter.GetTotal(list, totaller)); // fails
}
}
Run Code Online (Sandbox Code Playgroud)
出现以下错误:
Test method MyTests.DynamicTests.TestDynamic threw exception: …
我需要一种方法来一般地获取一个表并将其数据复制到一个新表 - 基本上与SELECT*INTO在常规SQL Server中所做的相同.有没有办法在SQL Azure中执行此操作?此时我只有现有的和新的表名.
我正在构建一个库并拥有一个第三方程序集,无论出于何种原因,我都希望将其打包为嵌入式资源,而不公开为其他DLL。
我的客户端ILM将我的库合并到其可执行文件中。但是,如果我为他们提供带有嵌入式资源的库,则它们会出现“不允许未解析的程序集引用”异常。
由于我不想将我与第三方程序集的所有交互都包装在反射代码中,因此我想将引用保留在库中。
有没有办法告诉ILMerge忽略特定的未解决程序集引用?
我正在编写一个组件来从 HTTP 服务流式传输一个大的(4+ GB)。该组件采用 URL 和目标流。目标流可以是文件流,也可以是 POST 到不同 HTTP 服务的流,甚至两者都可以。作为组件的作者,我需要执行以下步骤,直到完成:
我永远不应该有超过内存中数据缓冲区的大小。
我正在使用 flurl 对服务器进行 HTTP 调用。我已经尝试了以下方法来拨打我的电话
var stream = await flurlClient.GetStreamAsync();
Run Code Online (Sandbox Code Playgroud)
这给了我一个 MemoryStream,它不起作用,因为它会填满并占用与文件大小一样多的内存。
var response = flurlClient.GetAsync();
var stream = response.Content.ReadAsStreamAsync();
Run Code Online (Sandbox Code Playgroud)
再次,内存流。
var response = flurlClient.GetAsync();
var stream = new CustomFlushingSteam();
response.Content.CopyToAsync(stream);
Run Code Online (Sandbox Code Playgroud)
这个看起来很有希望,但遗憾的是,它试图使用单个 Write() 语句编写整个内容。
我怎样才能在不破坏记忆的情况下完成这项任务?我更喜欢使用 flurl,但我并没有被它束缚。