我们有一个VB.NET项目,我正在进行一些重构.许多当前函数需要将a userId
作为参数传入.例如:
Private Function Foo(userId As Integer) As String
Return "Foo"
End Function
Run Code Online (Sandbox Code Playgroud)
但是现在,我已经userId
在我们的大部分代码中不再需要这个参数了.
我想我会userId
从所有不再需要它们的函数中删除所有参数,并尝试重新构建项目以查看调用代码需要更改的内容.令我惊讶的是,代码构建成功.
我了解到你可以调用一个函数来返回一个字符串并且不接受任何参数,但仍然传入一个Integer
值.VB.NET构建/执行此代码,就像您尝试调用该函数一样,然后从指定索引处的String中获取字符.例如:
Imports System
Public Module MyModule
Private Function Foo() As String
Return "Foo"
End Function
Public Sub Main()
Console.WriteLine(Foo(0)) ' prints 'F'
Console.WriteLine(Foo(1)) ' prints 'o'
End Sub
End Module
Run Code Online (Sandbox Code Playgroud)
(.NET小提琴)
在这种情况下,我希望我的构建失败.我已经尝试使用Option Strict On
和Option Explicit On
但也似乎改变这种行为.
反正有没有在我的VB.NET项目中使这种函数调用无效?
这个HttpContext
类Cache
和Items
属性有什么区别?
从MSDN文档:
Cache
获取当前应用程序域的Cache对象.Items
获取一个键/值集合,可用于在HTTP请求期间在IHttpModule接口和IHttpHandler接口之间组织和共享数据.
我真的不明白该文档试图解释什么.
在处理ASP.NET Web应用程序时,我经常使用Items
每个请求的数据缓存,这样多个用户控件最终不会从数据库中查找相同的数据.这篇文章对此进行了描述.
今天,我遇到了Cache
属性的用法,看起来像每个请求缓存.我试图理解差异,但找不到比较这两者的任何好的文件.所以我想知道......
HttpContext的Cache和Items属性有什么区别?请尝试详细说明为什么在不同的真实场景中选择使用其中一个的示例.
使用 Python 的模拟框架,是否可以模拟修补类中不存在的函数。如果是这样,如何?
例如:
例子.py
import mock
import unittest
class MyClass(object):
pass
class MyTests(unittest.TestCase):
def test_mock_non_existent_function(self):
with mock.patch('example.MyClass.my_function'):
pass
Run Code Online (Sandbox Code Playgroud)
运行该测试会引发错误:
Error
Traceback (most recent call last):
File "/Users/jesse/Code/my_proj/lib/mock.py", line 1193, in patched
File "/Users/jesse/Code/my_proj/lib/mock.py", line 1268, in __enter__
File "/Users/jesse/Code/my_proj/lib/mock.py", line 1242, in get_original
AttributeError: <class 'example.MyClass'> does not have the attribute 'my_function'
Run Code Online (Sandbox Code Playgroud)
使用Python 2.7.9
和mock 1.0.1
。
有很多人在提出有关如何绕过cmd.exe命令最大长度的问题.我想知道Windows命令行长度限制究竟是什么?Windows版本之间有什么不同?使用32位还是64位版本是否会影响此限制?
我正在ASP.NET MVC3中开发一个全球化的Web应用程序.该项目包含I18N资源文件,我通常访问Razor视图中的资源,如...
@I18N.MyResourceString
Run Code Online (Sandbox Code Playgroud)
我有一个棘手的情况,我还没有找到一个优雅的解决方案.我需要能够将句子本地化为"点击此处捐赠"."这里"这个词应该是我们捐赠系统的链接.
网站中的大多数链接都是内部的,所以要创建链接我只需写...
@Html.ActionLink("Some link text", "MyAction", "MyController")
Run Code Online (Sandbox Code Playgroud)
这个捐赠链接是外部的.到目前为止我所做的(不起作用)是......
@String.Format(I18N.ClickHereToDonate, "<a href=\"http://paypal.com\">" + I18N.Here + "</a>")
Run Code Online (Sandbox Code Playgroud)
I18N.ClickHereToDonate
资源的文本在哪里"Click {0} to donate."
.
我在屏幕上看到的是......
Click <a href="http://paypal.com">here</a> to donate.
Run Code Online (Sandbox Code Playgroud)
此外,我还想在'a'标签中添加'title'属性.当我尝试时它变得更加丑陋......
@String.Format(I18N.ClickHereToDonate, "<a href=\"http://paypal.com\" title=\"" + I18N.PayPal + "\">" + I18N.Here + "</a>")
Run Code Online (Sandbox Code Playgroud)
必须有一种更好的方法来形成具有嵌入式标签的复杂字符串,而不会以这种hackish方式将事物连接在一起.它不仅不起作用(预期的标记被编码),但它使我的剃刀模板中的字符串文字内的HTML,这使我松散任何令人敬畏的IDE支持/整合/重构功能.
如何将标记注入本地化字符串?
更新
Adam Tuliper @Html.Raw
在他的回答中提到了辅助方法,所以我把它添加到我已经丑陋的标记......
@Html.Raw(String.Format(I18N.ClickHereToDonate, "<a href=\"http://paypal.com\" title=\"" + I18N.PayPal + "\">" + I18N.Here + "</a>"))
Run Code Online (Sandbox Code Playgroud)
这至少让我在输出的标记中找到了一个可点击的链接.
点击这里捐款.
它仍然是一个远不是优雅的解决方案,所以我仍然在寻找更好的方法来做到这一点.
我有一个带有 XML 数据类型列的数据库表。该列包含如下值:
<NameValuePairCollection>
<NameValuePair Name="Foo" Value="One" />
<NameValuePair Name="Bar" Value="Two" />
<NameValuePair Name="Baz" Value="Three" />
</NameValuePairCollection>
Run Code Online (Sandbox Code Playgroud)
我想查询在XML数据类型列的数值为所有行"One"
了"Foo"
。我在创建适当的 XQuery 来过滤结果时遇到问题。
我发现了几个相关的 SO 问题,它们对我的尝试有所帮助,但我仍然无法让它发挥作用。
如何查询 SQL Server XML 列中的值在
SQL Server XML 数据类型上使用 LIKE 语句
这是我到目前为止的 SQL:
select *
from MyTable
where [XmlDataColumn].value('((/NameValuePairCollection/NameValuePair)[@Name="Foo"])[@Value]', 'varchar(max)') = 'One'
order by ID desc
Run Code Online (Sandbox Code Playgroud)
这是我现在遇到的错误:
XQuery [MyTable.XmlDataColumn.value()]: Cannot atomize/apply data() on expression that contains type 'NameValuePair' within inferred type 'element(NameValuePair,#anonymous) *'
Run Code Online (Sandbox Code Playgroud)
更新(响应@LeoWörteler 的建议)
根据您的回答,我将 SQL 更改为:
select *
from MyTable …
Run Code Online (Sandbox Code Playgroud) 我有两个班:
public class MyClass
{
public int Foo { get; set; }
public string Bar { get; set; }
}
public class MyList : List<MyClass>
{
}
Run Code Online (Sandbox Code Playgroud)
在其他代码中,我正在MyClass
为数据库中的每条记录创建实例,我想在MyList
实例中返回它们:
var records = _repository.GetRecords();
return (MyList) records.Select(x => x.ConvertTo<MyClass>()).ToList();
Run Code Online (Sandbox Code Playgroud)
代码编译很好,但它抛出一个运行时 InvalidCastException
:
无法将类型为'System.Collections.Generic.List`1 [MyClass]'的对象强制转换为'MyList'.
我不明白为什么这个错误是因为发生的事情MyList
是一个List<MyClass>
.
我发现了一些相关的问题,都是关于协方差的.这个问题与我的问题最相似,但我不知道如何调整答案来解决我的问题.
我的问题:
如何MyList
从数据库记录中构建实例?
我正在使用C#和.NET 4.0
如果您在 HTML 文档中使用某个iFrame
元素,则子页面将加载来自浏览器的所有会话和 cookie 数据。
例如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Stack Overflow in an iFrame</title>
</head>
<body>
<h1>Stack Overflow in an iFrame</h1>
<iframe src="http://stackoverflow.com" width="640" height="480" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
暂时忽略 SO 实际上不允许自己加载到 iFrame 中。如果是这样,iFrame 加载的 SO 页面将显示您已登录。
如何在没有任何 cookie 或会话数据的情况下使用 iFrame?(就像 Chrome 中的隐身模式)
为什么?
我的公司销售一种产品(网络应用程序),供人们用来构建定制网站。当他们通过身份验证并访问其网站时,我们会向他们展示经过身份验证的 UI 版本,以便他们可以编辑内容。未经授权的用户只能看到静态网站。使用多个浏览器或清除 cookie 并不是我们用户的合理期望,因此我们希望在 iFrame 中向他们显示其网站的预览,以便他们可以看到访问者会看到的内容。我们还希望以较小分辨率的 iFrame 来显示网站的“移动”预览,以便他们可以看到访问者通过手机访问网站时会看到的内容。这些 iFrame 需要在不访问浏览器的 cookie 或会话数据的情况下加载,以便它们以未经身份验证的模式加载,就像 Chrome 在隐身模式下加载一样。
我还没有尝试过任何事情,因为我不知道从哪里开始。我确实发现HTML5 向元素添加了一些sandbox
属性值iFrame
,但它们似乎都无法帮助解决这个问题。也许可以用 JavaScript 来做一些事情,我们已经在我们的项目中使用了 jQuery。
注意:我们的目标是仅使用有效的 HTML5
我有一个具有昂贵__init__
功能的类。我不希望从测试中调用这个函数。
出于本示例的目的,我创建了一个在__init__
以下位置引发异常的类:
class ClassWithComplexInit(object):
def __init__(self):
raise Exception("COMPLEX!")
def get_value(self):
return 'My value'
Run Code Online (Sandbox Code Playgroud)
我有第二个类,它构造一个实例ClassWithComplexInit
并使用它的函数。
class SystemUnderTest(object):
def my_func(self):
foo = ClassWithComplexInit()
return foo.get_value()
Run Code Online (Sandbox Code Playgroud)
我正在尝试围绕SystemUnderTest#my_func()
. 我遇到的问题是无论我如何尝试模拟ClassWithComplexInit
,该__init__
函数总是被执行并引发异常。
class TestCaseWithoutSetUp(unittest.TestCase):
@mock.patch('mypackage.ClassWithComplexInit.get_value', return_value='test value')
def test_with_patched_function(self, mockFunction):
sut = SystemUnderTest()
result = sut.my_func() # fails, executes ClassWithComplexInit.__init__()
self.assertEqual('test value', result)
@mock.patch('mypackage.ClassWithComplexInit')
def test_with_patched_class(self, mockClass):
mockClass.get_value.return_value = 'test value'
sut = SystemUnderTest()
result = sut.my_func() # seems to not execute ClassWithComplexInit.__init__()
self.assertEqual('test value', …
Run Code Online (Sandbox Code Playgroud) 我有一个在foreach
循环中多次调用的方法,每次都有相同的参数值.
foreach (var item in myCollection)
{
// do some stuff with item
// then...
var result = _myService.Foo(aConstant, anotherConstant);
// do something with result
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个测试,确保循环继续迭代,即使_myService.Foo()
第一次抛出异常.
在Moq中,我被允许将调用链接在一起Returns
并且Throws
如此:
mockService.Setup(x => x.Foo(aConstant, anotherConstant)).Throws<Exception>().Returns(someResult);
Run Code Online (Sandbox Code Playgroud)
这将导致调用Foo
抛出异常,但所有后续调用都将返回someResult
.我的主要目标是确保try/catch块包含在foreach块内的代码的后半部分,以便即使发生异常,循环也会继续.
foreach (var item in myCollection)
{
// do some stuff with item
// then...
try
{
var result = _myService.Foo(aConstant, anotherConstant);
// do something with result
}
catch (Exception e)
{
// ignore …
Run Code Online (Sandbox Code Playgroud) mocking ×3
c# ×2
python ×2
python-2.7 ×2
.net ×1
asp.net ×1
caching ×1
casting ×1
cmd ×1
collections ×1
command-line ×1
cookies ×1
exception ×1
fakeiteasy ×1
generics ×1
html ×1
httpcontext ×1
iframe ×1
javascript ×1
moq ×1
parameters ×1
python-mock ×1
session ×1
sql ×1
sql-server ×1
unit-testing ×1
vb.net ×1
windows ×1
xml ×1
xquery ×1