给定接口IQuestion和该接口的实现AMQuestion,假设以下示例:
List<AMQuestion> typed = new List<AMQuestion>();
IList<IQuestion> nonTyped = typed;
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,这个例子产生一个编译错误,说明两者的类型不同.但它表明存在明确的转换.所以我把它改成这样:
List<AMQuestion> typed = new List<AMQuestion>();
IList<IQuestion> nonTyped = typed as IList<IQuestion>;
Run Code Online (Sandbox Code Playgroud)
然后编译,但在运行时,nonTyped始终为空.如果有人可以解释两件事:
这将不胜感激.谢谢!
我对Web开发很陌生,但在开发方面有很多经验.我有一个ASP页面,其中包含一些输入字段和一个提交按钮.这个提交按钮纯粹调用$ .ajax,我打算在代码隐藏文件中调用一个方法.但是,我注意到了两件有趣的事情.首先,无论向其提供什么数据,ajax调用都会成功.其次,responseText字段是整个页面的html源代码.
我已经阅读了这篇文章和其他指向webconfig的文章,但这些解决方案似乎无法解决我的问题.
这是asp页面:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script src="TesScript.js"></script>
<link rel="Stylesheet" type="text/css" href="TestStyle.css" />
</head>
<body>
<div>
<ul class="tempList">
<li>Name:
<input id="nameText" type="text" />
</li>
<li>Attending:
<input id="yesButton" type="radio" name="attending" />
Yes
<input id="noButton" type="radio" name="attending" />
No </li>
<li>Return Address:
<input id="returnAddressText" type="text" />
</li>
<li>
<input id="submitButton" type="button" onclick="submit()" value="Submit" />
</li>
</ul>
</div>
<ul id="errorContainer" class="errorSection" runat="server" />
<ul id="messageContainer" class="messageSection" runat="server" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
背后的代码:
using System;
using …Run Code Online (Sandbox Code Playgroud) 我有一个RESTful WCF Web服务,其中包含以下API:
[WebGet(ResponseFormat = WebMessageFormat.Json)]
MyResponseContract GetFileInfo();
Run Code Online (Sandbox Code Playgroud)
尝试命中端点(使用SOAPUI)时,我看到以下错误消息:
服务器遇到处理请求的错误.请参阅服务帮助页面以构建对服务的有效请求.
我有SOAPUI设置为使用GET方法调用命中它.当我将其切换到没有正文的POST时,它会失败并显示以下消息:
方法不允许.
这很有道理:无法通过POST获得GET.所以我更新了我的代码如下:
[WebInvoke(ResponseFormat = WebMessageFormat.Json)]
MyResponseContract GetFileInfo();
Run Code Online (Sandbox Code Playgroud)
现在我使用POST方法从SOAPUI调用它并且它可以工作.好奇.所以我现在更改我的代码如下:
[WebInvoke(ResponseFormat = WebMessageFormat.Json, Method = "GET")]
MyResponseContract GetFileInfo();
Run Code Online (Sandbox Code Playgroud)
我在一些帖子中看到,这基本上等同于一个WebGet属性.这也行不通.
所以我的问题是:WebGet即使我不接受参数或使用自定义UriTemplate,为什么这不起作用?
我试图点击它(它在IIS本地托管)的Url是:
http://localhost/Utilities/API/GetFileInfo
更新 鉴于下面的评论和给出的答案,我仍然面临这个问题.一些额外的细节.
我的web层web.config
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<customErrors mode="Off" />
</system.web>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" maxReceivedMessageSize="10000000" />
</webHttpEndpoint>
</standardEndpoints>
<behaviors>
<endpointBehaviors>
<behavior name="exampleBehavior">
<callbackDebug includeExceptionDetailInFaults="true" />
<enableWebScript />
<webHttp helpEnabled="true" />
</behavior>
</endpointBehaviors>
</behaviors> …Run Code Online (Sandbox Code Playgroud) 因此,在开发WinRT应用程序时,偶尔和看似随机的Visual Studio经历了一个漫长的过程,从"创建一个新的干净布局......"开始,我想了解有关WinRT应用程序所涉及的构建和部署过程的更多信息.我理解创建在某种沙箱环境中运行的应用程序的概念,但我正在寻找有关该沙箱环境的信息.另外(这可能听起来很愚蠢)但是在沙箱中运行的可执行文件有什么不同,为什么它不能作为独立运行?感谢您提前获取的信息.
我曾尝试对此进行一些研究,但对WinRT的这一部分似乎知之甚少.
编辑:
我将开始对此表示赏心悦目,因为我真的不理解它,谷歌/微软在我搜索时非常贫瘠.所以获得赏金的问题是:
先感谢您!!
deployment build windows-8 windows-runtime visual-studio-2012
我有一个包含几个.NET项目的解决方案.我使用GitLab而不是自托管来进行版本控制,并且也想开始使用他们的CI工具.我已将以下.gitlab-ci.yml文件添加到我的root:
stages:
- build
- test
build_job:
stage: build
script:
- 'echo building...'
- 'msbuild.exe Bizio.sln'
except:
- tags
test_job:
stage: test
script:
- 'echo: testing...'
- 'msbuild.exe Bizio.sln'
- 'dir /s /b *.Tests.dll | findstr /r Tests\\bin\\ > tests_list.txt'
- 'for /f %%f in (tests_list.txt) do mstest.exe /testcontainer: "%%f"'
except:
- tags
Run Code Online (Sandbox Code Playgroud)
该build阶段总是失败,因为它不知道什么msbuild是.确切的错误是:
/ bin/bash:第61行:msbuild.exe:找不到命令
经过一番调查,我发现我正在使用共享的跑步者.以下是作业运行的整个输出:
Running with gitlab-runner 10.6.0-rc1 (0a9d5de9)
on docker-auto-scale 72989761
Using Docker executor with image ruby:2.5 ...
Pulling docker …Run Code Online (Sandbox Code Playgroud) 所以我正在编写一个面向.NET 4.5,Windows 8和Windows Phone 8的可移植类库.我正在尝试从作为构建内容的项目一部分的文本文件中读取.我看到StreamReader在PCL中可用但我似乎无法找到如何从给定文件路径的文件中获取流.如果有人能指出我正确的结构,我会很感激.此外,如果您也可以为XML文件指明方向.我现在只阅读文本文件,但稍后我将使用XML.谢谢!
所以这很奇怪,可能有一个非常简单的解释,但我正在使用一台我通常不会使用VS 2010的出厂默认安装开发的机器.下面发布的代码正是我正在运行的,它引起了这个熟悉的消息:
Windows已在ProjectB.exe中触发断点.
这可能是由于堆的损坏,这表示ProjectB.exe或它已加载的任何DLL中的错误.
这也可能是由于用户在ProjectB.exe具有焦点时按下F12.
输出窗口可能包含更多诊断信息.
代码是:
#include <iostream>
#include <cstdlib>
using namespace std;
int main( int argc, char** argv )
{
system( "pause" );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
而已!没有更多,只有一个文件.注释掉系统("暂停")不会触发中断,但我无法阻止程序退出(正如您所期望的那样).所以我真的很困惑.这对我来说似乎很奇怪,因为我以前从未经历过这种情况,我不明白为什么这会导致问题.使用另一个不会停止进程的系统命令(如system("cls"))也不会导致问题.我倾向于这是我正在研究的机器特有的,但我不确定.提前致谢!
任何帮助表示赞赏.
[编辑]
所以我以前从未调试过标准标题(至少没有故意),但我注意到一件事:
在__crtCorExitProcess加载调用中,mscoree.dll模块返回一个空句柄,这意味着它没有加载.我不确定这是不是通常会发生的事情,但这样做会跳过一段获取exit proc函数指针的代码.调用此方法之后调用ExitProcess调用,并且从此处触发中断.
[编辑2]
在调用以下内容后,在输出窗口中生成以下内容
system( "pause" ):ProjectB.exe中0x750cc41f处的第一次机会异常:Microsoft C++异常:> log4cxx :: helpers ::内存位置0x006ff1fc处的IOException .. ProjectB中0x750cc41f处的第一次机会异常.exe:Microsoft C++异常:> log4cxx :: helpers :: IOException在内存位置0x006ff344 .. SPLogger:setFile(C:\ ProgramData\Safend\Logs.18698\SPHook.log,true)调用失败.SPLogger:IO异常:状态代码= 720005 SPLogger:没有为名为[SPHookLog]的appender设置输出流或文件.
然后当调用ExitProcess时,会将其添加到输出窗口:
线程'Win32 Thread'(0x1ca8)已退出,代码为0(0x0).HEAP [ProjectB.exe]:HEAP:免费堆块21a4ba8在被释放后在21a4c10修改
这对我很好奇.
我正在使用Xamarin/Monogame开发游戏,我需要在他们点击我的输入控件时在移动设备上打开键盘.我认识到我可以Keyboard.GetState()在使用模拟器和键盘时捕获输入,但真正的用户将拥有物理设备,我需要打开屏幕键盘才能输入信息.我没有在任何描述这个的文档中看到任何内容,但很难相信我是第一个碰到这个问题的人.我在输入时查看了Xamarin/Monogame的文档,并且我已经阅读了这篇StackOverflow文章.如果您需要更多信息来帮助我解决此问题,请与我们联系.在此先感谢您的帮助.
我经常环顾四周,似乎找不到与我正在做的事情相似的解决方案.我有两个应用程序,一个本机C++应用程序和一个托管C#应用程序.C++应用程序分配在内存管理器中使用的字节池.在此内存管理器中分配的每个对象都有一个标头,每个标头都有一个char*,指向给定对象的名称.C#app充当此内存的查看器.我使用内存映射文件允许C#app在C++应用程序运行时读取内存.我的问题是我试图从头结构中读取对象的名称并将其显示在C#中(或者只是将它存储在String中,无论如何).使用不安全的代码,我能够在四个字节组成转换char*成一个IntPtr,将其转换成一个void*,并调用Marshal.PtrToStringAnsi.这是代码:
IntPtr namePtr = new IntrPtr(BitConverter.ToInt32(bytes, index));
unsafe
{
void* ptr = namePtr.ToPointer();
char* cptr = (char*)ptr;
output = Marshal.PtrToStringAnsi((IntPtr)ptr);
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,bytes是从内存映射文件中读取的数组,它表示本机应用程序创建的所有字节池,并且index是名称指针的第一个字节的索引.
我已经验证,在托管方面,调用返回namePtr.ToPointer()的地址正是本机应用程序中名称指针的地址.如果这是本机代码,我会简单地转换ptr为a char*并且它会没问题,但在托管代码中,我已经阅读过,我必须使用Marshaller来执行此操作.
此代码会产生不同的结果.有时候cptr是null,有时它指向,有时它指向\0一些亚洲字符(当通过该PtrToStringAnsi方法运行时产生看似无关的字符).我认为这可能是一fixed件事,但ToPointer产生一个固定的指针.有时候,在char*调试者的演员表示Unable to evaluate the expression. The pointer is not valid或类似的东西之后(重新调整每一个变化的东西都不容易).有时我在读取内存时会遇到访问冲突,导致我进入C++方面.
在C++方面,我认为实际读取内存可能存在一些问题,因为虽然存储指针的内存是内存映射文件的一部分,但构成文本的实际字节却不是.所以我看看如何更改对内存的读/写访问权限(在Windows上,请注意)并在Windows库中找到VirtualProtect方法,我用它将内存访问权限更改为PAGE_EXECUTE_WRITECOPY,我认为这会给任何应用程序有一个指向该地址的指针将能够至少读取那里的内容.但这也没有解决问题.
简而言之:
我有一个指针(在C#中)到char数组中的第一个char(在C++应用程序中分配)并且我试图将该数组的char读入C#中的字符串.
编辑:
源标头如下所示:
struct AllocatorHeader
{
// These bytes are reserved, and their …Run Code Online (Sandbox Code Playgroud) 我有一个Json字符串:
{
"B" :
{
"JackID" : "1",
"Faction" : "B",
"Regard" : "24",
"Currency" : "1340",
"factionName" : "Buccaneer",
"factionKing" : "22",
"Tcurrency" : "0",
"currencyname" : "Pieces of Eight",
"textcolor" : "#FFFFFF",
"bgcolor" : "#000000"
},
"P" :
{
"JackID" : "1",
"Faction" : "P",
"Regard" : "20",
"Currency" : "250",
"factionName" : "Privateer",
"factionKing" : "4",
"Tcurrency" : "0",
"currencyname" : "Privateer Notes",
"textcolor" : "#000000",
"bgcolor" : "#FFFF00"
},
"N" :
{
"JackID" : "1",
"Faction" …Run Code Online (Sandbox Code Playgroud)