我正在使用动画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)
所以这有效,但我怎样才能使这个可重用?我不想将这些元数据粘贴到每个视图上.由于这是元数据,我不确定如何使这个可重用.
我试图找到一种方法来获取给定实体类型的基础SQL表名称.我已经尝试过使用MetadataWorkspace查询,虽然我可以从对象或存储空间获取大量信息,但我似乎无法弄清楚如何在两者之间进行映射.
所以说我在对象模型中有一个名为Lookup的类型 - 如何在数据库中找到tablename(wws_lookups)?
我可以查询CSpace和SSpace的所有EntityType对象,我可以看到两者都正确列出,但我无法弄清楚如何从CSpace获取SSpace.
有没有办法做到这一点?
我正在将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()在代码中使用时也会抛出构建错误.
有人提到这应该如何工作?
有没有办法在Visual Studio Code中扩展支持的语言/语法?我想添加自定义语言语法,但我无法找到有关如何提供语言服务的任何信息.
任何人都可以指出现有语言实现的任何参考或甚至示例吗?
我正在使用一个使用Web浏览器控件的WPF应用程序,我遇到了高DPI缩放问题.
看起来Web浏览器控件没有正确地遵循系统的DPI设置,而WPF应用程序的其余部分正在正确扩展UI.这意味着在更高级别的级别上,WPF界面变得更大,而Web浏览器内容保持原始的,现在看起来更小.
以下是使用两个Web浏览器控件的WPF应用程序中的屏幕截图示例.
100%缩放:
150%缩放:
请注意,在第二个图像中,Web浏览器缩放比第一个图片相对于主窗体内容(工具栏/菜单/状态栏)小得多.
是否有某种方法可以强制Web浏览器控件正确使用从应用程序继承的高DPI设置?
此MSDN链接: 解决DPI问题
显示了一个真正低级的方法(在doc的底部)实现自定义Web浏览器COM接口,但我想知道是否有更清晰的方法来解决这个问题.
我正在努力与似乎不处理默认命名空间的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使用显式名称空间前缀而不手动重写消息的任何想法?
我正在尝试使用新的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客户端,只是为了转向缓冲.
我有一个旧的应用程序,它使用经典的Web服务代理与Java Web服务进行交互.不久之后,Web Service托管商决定要求为每个请求发送自定义HTTP标头以访问服务 - 否则请求将被彻底抛弃(看起来这是某种路由器要求).无论我需要在请求中注入自定义HTTP标头的原因是什么.
有没有办法与实际的Http客户端进行交互来执行添加自定义标头的操作?
我正在尝试基于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(),但这只是客户区,这不是我所追求的.我想得到的是带有边框但没有阴影的实际窗口矩形.
反正有没有这样做?
我在一个简单的测试场景中有一个对象,它使用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) c# ×4
.net ×2
angular ×2
soap ×2
asmx ×1
code-first ×1
dpi ×1
pinvoke ×1
rxjs ×1
tmlanguage ×1
wcf ×1
web-services ×1
winapi ×1
windows ×1
wpf ×1