小编Ric*_*ahl的帖子

如何在Angular 2中创建可重用的动画

我正在使用动画API,我想创建一个可重复使用的动画,比如说在顶级路由器视图的内容中滑动.我设法通过时髦的元数据语法(实际上非​​常酷,一旦超过使用元数据的疯狂想法)来使动画主要工作.

   @Component({
      //moduleId: module.id,
      selector: 'album-display',
      templateUrl: './albumDisplay.html',
      animations: [
        trigger('slideIn', [
          state('*', style({
            transform: 'translateX(100%)',
          })),
          state('in', style({
            transform: 'translateX(0)',
          })),
          state('out',   style({
            transform: 'translateX(-100%)',
          })),
          transition('* => in', animate('600ms ease-in')),
          transition('in => out', animate('600ms ease-in'))
        ])
      ]
  })
  export class AlbumDisplay implements OnInit {
      slideInState = 'in';
      ...
  }
Run Code Online (Sandbox Code Playgroud)

然后将其分配给组件中的顶级元素:

  <div  class="container" [@slideIn]="slideInState">
Run Code Online (Sandbox Code Playgroud)

所以这有效,但我怎样才能使这个可重用?我不想将这些元数据粘贴到每个视图上.由于这是元数据,我不确定如何使这个可重用.

angular2-animation angular

51
推荐指数
2
解决办法
2万
查看次数

从实体框架MetaData获取数据库表名称

我试图找到一种方法来获取给定实体类型的基础SQL表名称.我已经尝试过使用MetadataWorkspace查询,虽然我可以从对象或存储空间获取大量信息,但我似乎无法弄清楚如何在两者之间进行映射.

所以说我在对象模型中有一个名为Lookup的类型 - 如何在数据库中找到tablename(wws_lookups)?

我可以查询CSpace和SSpace的所有EntityType对象,我可以看到两者都正确列出,但我无法弄清楚如何从CSpace获取SSpace.

有没有办法做到这一点?

.net entity-framework database-metadata

48
推荐指数
8
解决办法
6万
查看次数

Angular 6 RXJS导入语法?

我正在将Angular 5应用程序迁移到最新的CLI和Angular 6 RC,并且我的所有Observable导入都被破坏了.我看到Angular 6改变了导入的工作方式,但我找不到任何关于语法如何工作的明确参考.

我在5中有这个,它运行良好:

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import 'rxjs/add/observable/throw';
Run Code Online (Sandbox Code Playgroud)

现在使用新语法,我看到了

import { Observable, Subject, throwError} from 'rxjs';
import { map } from 'rxjs/operators';
Run Code Online (Sandbox Code Playgroud)

前两行编译,但我无法弄清楚如何获取catch和throw例如..map()在代码中使用时也会抛出构建错误.

有人提到这应该如何工作?

rxjs angular angular-observable

40
推荐指数
4
解决办法
7万
查看次数

在Visual Studio代码中创建自定义语言

有没有办法在Visual Studio Code中扩展支持的语言/语法?我想添加自定义语言语法,但我无法找到有关如何提供语言服务的任何信息.

任何人都可以指出现有语言实现的任何参考或甚至示例吗?

visual-studio-code tmlanguage vscode-extensions

31
推荐指数
5
解决办法
2万
查看次数

WPF Web浏览器控件和DPI缩放

我正在使用一个使用Web浏览器控件的WPF应用程序,我遇到了高DPI缩放问题.

看起来Web浏览器控件没有正确地遵循系统的DPI设置,而WPF应用程序的其余部分正在正确扩展UI.这意味着在更高级别的级别上,WPF界面变得更大,而Web浏览器内容保持原始的,现在看起来更小.

以下是使用两个Web浏览器控件的WPF应用程序中的屏幕截图示例.

100%缩放:

在此输入图像描述

150%缩放:

在此输入图像描述

请注意,在第二个图像中,Web浏览器缩放比第一个图片相对于主窗体内容(工具栏/菜单/状态栏)小得多.

是否有某种方法可以强制Web浏览器控件正确使用从应用程序继承的高DPI设置?

此MSDN链接: 解决DPI问题

显示了一个真正低级的方法(在doc的底部)实现自定义Web浏览器COM接口,但我想知道是否有更清晰的方法来解决这个问题.

c# wpf dpi webbrowser-control

16
推荐指数
2
解决办法
3339
查看次数

WCF客户端:强制全局命名空间

我正在努力与似乎不处理默认命名空间的SOAP服务进行交互,但可以在SOAP信封级别声明的全局命名空间和命名空间前缀中正常工作.

问题是WCF不会在根目录下创建这些全局命名空间,而是使用明确的未加前缀的默认命名空间,服务显然是在阻塞.现在我知道这不是WCF的错 - 我相信WCF生成的消息是有效的XML,但是服务仍然扼杀它.

使用WCF生成的输出如下所示:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <h:Security xmlns:h="http://docs.oasis-open.org/wss/2004/01/oasis-
          ...
    </h:Security>
  </s:Header>
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <cancelShipmentRequest xmlns="http://www.royalmailgroup.com/api/ship/V2">
      <integrationHeader>
        <dateTime xmlns="http://www.royalmailgroup.com/integration/core/V1">2016-03-26T01:44:37.0493801Z</dateTime>
        <version xmlns="http://www.royalmailgroup.com/integration/core/V1">2</version>
        <identification xmlns="http://www.royalmailgroup.com/integration/core/V1">
          <applicationId>RMG-API-G-01</applicationId>
          <transactionId>ozhckwej6sxg</transactionId>
        </identification>
      </integrationHeader>
      <cancelShipments>
        <shipmentNumber>TTT001908905GB</shipmentNumber>
      </cancelShipments>
    </cancelShipmentRequest>
  </s:Body>
</s:Envelope>
Run Code Online (Sandbox Code Playgroud)

这不起作用.

但是,使用以下SOAP信封(在SoapUI中手动)可以正常工作:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:oas="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
  xmlns:v2="http://www.royalmailgroup.com/api/ship/V2"
  xmlns:v1="http://www.royalmailgroup.com/integration/core/V1">
  <soapenv:Header>
    <h:Security xmlns:h="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
       ...
    </h:Security>
  </soapenv:Header>
  <soapenv:Body>
    <v2:cancelShipmentRequest>
      <v2:integrationHeader>
        <v1:dateTime>2016-03-02T14:55:00Z</v1:dateTime>
        <v1:version>2</v1:version>
        <v1:identification>
          <v1:applicationId>RMG-API-G-01</v1:applicationId>
          <v1:transactionId>wftdaife96gv</v1:transactionId>
        </v1:identification>
      </v2:integrationHeader>
      <v2:cancelShipments>
        <v2:shipmentNumber>TTT001908905GB</v2:shipmentNumber>
      </v2:cancelShipments>
    </v2:cancelShipmentRequest>
  </soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

两者之间的区别在于v1和v2名称空间在文档的顶部全局声明,并且第二个文档中没有本地名称空间声明.

也许我错过了一些东西,但对我而言,WCF生成的XML看起来是有效的,并且在命名空间方面表示相同的文档状态.

我能说的唯一区别是声明名称空间的方式.虽然WCF版本似乎有效并产生相同的命名空间,但该服务仍抱怨无效的命名空间引用.

架构验证失败:消息架构验证失败:架构有效性错误:元素'xmlns':不期望此元素.预期是({ http://www.royalmailgroup.com/api/ship/V2 } integrationHeader).

问题是,强制WCF在顶部而不是内联添加命名空间引用的最佳方法是什么?到目前为止,我发现的唯一方法是使用消息检查器并显式重写消息,但如果我完成所有操作,我也可以手动创建消息.

我可以尝试强制WCF使用显式名称空间前缀而不手动重写消息的任何想法?

c# wcf soap

15
推荐指数
1
解决办法
2559
查看次数

如何使用System.Net.HttpClient检索部分响应

我正在尝试使用新的HttpClient类(在.NET 4.5中)从服务器检索部分响应以检查内容.我需要将检索到的数据大小限制为HTTP请求中内容的前几个字节,以限制带宽使用.

我一直无法做到这一点.我尝试过使用GetAsync(url,HttpCompletionOption.ResponseHeadersRead),然后使用Content.ReadAsStream()尝试只读取标题,然后在一个小块中读取响应流.我还尝试了GetStreamAsync(),然后用一小块(1000字节)读取内容流.

在这两种情况下,HttpClient似乎都在拉动和缓冲整个HTTP响应,而不仅仅是从流中读取请求的字节数.

最初我使用Fiddler监控数据,但意识到Fiddler实际上可能导致整个内容被代理.我切换到使用System.Net跟踪(显示):

ConnectStream#6044116::ConnectStream(Buffered 16712 bytes.)
Run Code Online (Sandbox Code Playgroud)

这是完整的大小,而不仅仅是读取的1000个字节.我还对Wireshark进行了双重检查,以确认是否确实通过电线拉出了全部内容.对于更大的内容(如110k链接),我会在截断TCP/IP流之前获得大约20k的数据.

我试图读取数据的两种方式:

response = await client.GetAsync(site.Url, HttpCompletionOption.ResponseHeadersRead);
var stream = await response.Content.ReadAsStreamAsync();

var buffer = new byte[1000];                                        
var count = await stream.ReadAsync(buffer, 0, buffer.Length);
response.Close()  // close ASAP
result.LastResponse = Encoding.UTF8.GetString(buffer);
Run Code Online (Sandbox Code Playgroud)

和:

var stream = await client.GetStreamAsync(site.Url);
var buffer = new byte[1000];
var count = await stream.ReadAsync(buffer, 0, buffer.Length);
result.LastResponse = Encoding.UTF8.GetString(buffer);
Run Code Online (Sandbox Code Playgroud)

它们都产生几乎相同的.NET跟踪,包括缓冲读取.

是否有可能让HttpClient实际只读取一小部分Http Repsonse,而不是整个响应以便不使用全带宽?IOW有没有办法使用HttpClient或HttpWebRequest禁用HTTP连接上的任何缓冲?

更新: 经过一些更广泛的测试后,看起来HttpClient和HttpWebRequest都会缓冲前几个TCP/IP帧 - 可能是为了确保捕获HTTP头.因此,如果你返回一个足够小的请求,它往往会被完全加载,因为它是在初始缓冲读取中.但是,当加载更大的内容网址时,内容会被截断.对于HttpClient来说,它约为20k,对于HttpWebRequest来说,对我来说大约是8k.

使用TcpClient没有任何缓冲问题.使用它时,我会以读取的大小读取内容,加上最近的缓冲区大小重叠,但这包括HTTP标头.使用TcpClient对我来说不是一个真正的选择,因为我们必须处理SSL,重定向,Auth,Chunked内容等.此时我会考虑实现一个完整的自定义HTTP客户端,只是为了转向缓冲.

.net c# dotnet-httpclient

14
推荐指数
1
解决办法
6846
查看次数

将自定义Http标头添加到Web服务代理

我有一个旧的应用程序,它使用经典的Web服务代理与Java Web服务进行交互.不久之后,Web Service托管商决定要求为每个请求发送自定义HTTP标头以访问服务 - 否则请求将被彻底抛弃(看起来这是某种路由器要求).无论我需要在请求中注入自定义HTTP标头的原因是什么.

有没有办法与实际的Http客户端进行交互来执行添加自定义标头的操作?

soap web-services asmx

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

在没有Windows阴影的情况下检索窗口大小

我正在尝试基于Window句柄捕获C#中的桌面窗口.我正在使用.NET并使用PInvoke来GetWindowRect()来捕获窗口矩形.我有窗口选择和矩形捕获工作正常.

但是,捕获的窗口矩形不仅包括实际窗口大小,还包括Window的装饰,如周围的阴影.当我尝试将窗口剪辑为位图时,位图包含区域和阴影.在Windows 10上,我得到透明阴影区域,包括活动窗口下方可能显示的任何内容:

在此输入图像描述

我使用的代码很简单,通过PInvoke调用使用Win32 GetWindowRect()捕获Window:

var rect = new Rect();
GetWindowRect(handle, ref rect);
var bounds = new Rectangle(rect.Left, rect.Top, rect.Right - rect.Left, rect.Bottom - rect.Top);
var result = new Bitmap(bounds.Width, bounds.Height);

using (var graphics = Graphics.FromImage(result))
{
    graphics.CopyFromScreen(new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size);
}

return result;
Run Code Online (Sandbox Code Playgroud)

然后我捕获图像并将其分配到图片框中.

此外,它看起来像窗户之间有一些变化 - 有些窗户有阴影,有些窗户没有.大多数人都这样做,但是像Visual Studio和Chrome这样的人没有,所以它甚至不是一个简单的问题,即剥离无关的像素.

我已经尝试过使用GetClientRect(),但这只是客户区,这不是我所追求的.我想得到的是带有边框但没有阴影的实际窗口矩形.

反正有没有这样做?

c# windows pinvoke winapi

12
推荐指数
2
解决办法
1503
查看次数

EF Code First:IValidatable Object未验证

我在一个简单的测试场景中有一个对象,它使用EF Code First并实现IValidatableObject.有一些非常简单的逻辑可以添加验证错误并将其返回.对象上还有其他验证.

但是,在保存对象时 - 基于属性的验证工作 - IValidatableObject接口似乎永远不会触发.调试器不会进入它,并且调用SaveChanges()或GetValidationErrors()时错误永远不会出现.

public class Customer : IValidatableObject {
[Key]
public int Id { get; set; }

[StringLength(50)]
[DisplayName("First Name")]

public string FirstName { get; set; }

[Required]
[DisplayName("Last Name")]
[StringLength(50)]
public string LastName { get; set; }

[Required]
[StringLength(100)]
public string Company { get; set; }

[StringLength(200)]
public string Email { get; set; }

[DisplayName("Credit Limit")]
public decimal CreditLimit { get; set; }

[DisplayName("Entered On")]
public DateTime? Entered { get; set; }


public virtual …
Run Code Online (Sandbox Code Playgroud)

entity-framework code-first

11
推荐指数
1
解决办法
2933
查看次数