小编And*_*rew的帖子

如何告诉Pex不要存根具有具体实现的抽象类

我正在尝试使用Pex来测试一些代码.我有一个抽象类,有四个具体的实现.我为四种具体类型中的每一种创建了工厂方法.我还为抽象类型创建了一个,除非这个好的线程解释,Pex不会使用抽象工厂方法,也不应该使用它.

问题是我的一些代码依赖于四种具体类型(因为创建更多的子类非常非常不可能),但是Pex通过使用Moles来创建存根来破坏代码.

我怎样才能强制Pex使用其中一个工厂方法(任何一个,我不关心)来创建抽象类的实例而不为该抽象类创建Moles存根?是否有PexAssume指令可以实现这一目标?请注意,某些具体类型构成了一种树结构,因此可以ConcreteImplementation从中派生出来AbstractClass,并且ConcreteImplementation具有两种类型的属性AbstractClass.我需要确保树中的任何地方都没有使用存根.(并非所有具体实现都具有AbstractClass属性.)

编辑:

看来我需要添加一些关于类结构本身如何工作的更多信息,但要记住,目标仍然是如何让Pex不要使用存根类.

以下是抽象基类的简化版本及其四个具体实现.

public abstract class AbstractClass
{
    public abstract AbstractClass Distill();

    public static bool operator ==(AbstractClass left, AbstractClass right)
    {
         // some logic that returns a bool
    }

    public static bool operator !=(AbstractClass left, AbstractClass right)
    {
         // some logic that basically returns !(operator ==)
    }

    public static Implementation1 Implementation1
    {
        get
        {
            return Implementation1.GetInstance;
        }
    }
}

public class Implementation1 : …
Run Code Online (Sandbox Code Playgroud)

c# pex .net-3.5 moles pex-and-moles

59
推荐指数
1
解决办法
1615
查看次数

如何消除错误3002?

假设我在SQL Server 2008中有以下表定义:

CREATE TABLE Person
(PersonId INT IDENTITY NOT NULL PRIMARY KEY,
 Name VARCHAR(50) NOT NULL,
 ManyMoreIrrelevantColumns VARCHAR(MAX) NOT NULL)

CREATE TABLE Model
(ModelId INT IDENTITY NOT NULL PRIMARY KEY,
 ModelName VARCHAR(50) NOT NULL,
 Description VARCHAR(200) NULL)

CREATE TABLE ModelScore
(ModelId INT NOT NULL REFERENCES Model (ModelId),
 Score INT NOT NULL,
 Definition VARCHAR(100) NULL,
 PRIMARY KEY (ModelId, Score))

CREATE TABLE PersonModelScore
(PersonId INT NOT NULL REFERENCES Person (PersonId),
 ModelId INT NOT NULL,
 Score INT NOT NULL,
 PRIMARY KEY (PersonId, …
Run Code Online (Sandbox Code Playgroud)

linq-to-entities entity-framework .net-3.5 sql-server-2008

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

如何使用与UpdatePanel类似的标记使用内部属性创建ASP.NET用户控件?

我正在创建一个用户控件,我希望它具有内部属性以及普通属性.虽然控件的实际功能与UpdatePanel无关,但我试图创建具有类似ASPX标记的东西.设计页面的开发人员应该能够使用我的控件,如:

<ns:MyControl ID="someID" runat="server" SomeOtherAttribute="true">
  <ContentTemplate>
    <asp:Label ID="someLabel" runat="server" Text="Normal page markup and controls should go here" /><br />
    <p>This should be OK too.</p>
  </ContentTemplate>
  <ControlEvent ControlName="idOfOtherControl" Event="Click" />
  <ControlEvent ControlName="idOfSomeOtherControl" Event="MouseOver" />
</ns:MyControl>
Run Code Online (Sandbox Code Playgroud)

也可以接受将ControlEvent标签包装在其他标签中,更像是使用UpdatePanel时发生的情况:

<ns:MyControl ID="someID" runat="server" SomeOtherAttribute="true">
  <ContentTemplate>
    <asp:Label ID="someLabel" runat="server" Text="Normal page markup and controls should go here" /><br />
    <p>This should be OK too.</p>
  </ContentTemplate>
  <ControlEvents>
    <ns:ControlEvent ControlName="idOfOtherControl" Event="Click" />
    <ns:ControlEvent ControlName="idOfSomeOtherControl" Event="MouseOver" />
  </ControlEvents>
</ns:MyControl>
Run Code Online (Sandbox Code Playgroud)

但是,ControlEvents标记应该只允许这个特定的标记,而不是正常的服务器标记或任何东西.

我理解如何获取内部ContentTemplate渲染内容(在我看来Page_Init,我使用的 …

asp.net user-controls

9
推荐指数
1
解决办法
4531
查看次数

在64位Windows上将字符串从C++返回到C#时,如何防止AccessViolationException?

我正在使用第三方专有DLL,我无法获得源代码.但是,使用SWIG 1.3.39自动生成的包装代码可供我使用.包装器代码包含一个C++文件,该文件编译(使用一些描述DLL的头文件)到DLL和一个C#项目,它使PInvoke调用C++包装器DLL.

根据我对供应商文档的解释,我已将解决方案中的所有内容编译为x86或x64,具体取决于目标平台.供应商提供专有DLL的32位和64位版本,并且我确保我使用正确的版本给定构建.我的机器是32位的.在我的机器上,在发布版本或调试版本中测试我的应用程序的x86版本似乎工作正常.但是,在64位上,应用程序在调试模式下工作,但在发布模式下因System.AccessViolationException而失败.

我已经阅读了这篇很好的博客文章,似乎很好地描述了调试与发布问题,以及引发博客文章的这个问题和答案.但是,我不确定如何在这种情况下解决问题.

AccessViolationException似乎是在第一次从C++包装器返回(或尝试返回)任何实际长度的字符串时发生的.这是违规的C#代码:

// In one file of the C# wrapper:
public string GetKey()
{
    // swigCPtr is a HandleRef to an object already created
    string ret = csWrapperPINVOKE.mdMUHybrid_GetKey(swigCPtr);
    return ret;
}

// In the csWrapperPINVOKE class in another file in the C# wrapper:
[DllImport("csWrapper.dll", EntryPoint="CSharp_mdMUHybrid_GetKey")]
public static extern StringBuilder mdMUHybrid_GetKey(HandleRef jarg1);
Run Code Online (Sandbox Code Playgroud)

来自C++包装器的麻烦的C++代码:

SWIGEXPORT char * SWIGSTDCALL CSharp_mdMUHybrid_GetKey(void * jarg1) {
  char * jresult ;
  mdMUHybrid *arg1 = (mdMUHybrid *) 0 ; …
Run Code Online (Sandbox Code Playgroud)

c++ pinvoke swig .net-4.0 access-violation

9
推荐指数
1
解决办法
4505
查看次数

关闭Saxon中的xml标头输出

使用.NET版本的Saxon 9.4,我运行一个命令行,如:

Query.exe -s:myfile.xml -qs:/cruisecontrol/build/msbuild[@success='true']/project[1]/target[@name='GetLatestSource']/message[last()]/text()
Run Code Online (Sandbox Code Playgroud)

我得到了一个结果

<?xml version="1.0" encoding="UTF-8"?>375
Run Code Online (Sandbox Code Playgroud)

如何关闭XML标头(省略XML声明)以便我得到375输出?我已经检查了文档,但也许我只是错过了它.

xml xpath saxon

7
推荐指数
1
解决办法
1320
查看次数

实例方法是否在每个对象的内存中重复?

为了更清楚我的问题,如果你创建一个特定类的数组:例如,

ExampleClass[] test = new ExampleClass[5]; 
Run Code Online (Sandbox Code Playgroud)

我知道这五个ExampleClass实例会为每个类创建每个变量的副本,但是在内存中重复5次的方法/函数,还是每个测试只指向同一个单一的代码库?如果它为每个类重复,那只会浪费内存.

c# oop class

7
推荐指数
1
解决办法
1348
查看次数

将PostBackTriggers和AsyncPostBackTriggers添加到UpdatePanel以获取动态生成的孙子控件

我有一个带有ScriptManager的页面,一个通用的HTML下拉列表(<select>)和一个UpdatePanel.UpdatePanel包含一个PlaceHolder(现在).在Page_Load期间,PlaceHolder中添加了许多用户控件(实际上,它是同一用户控件的几个实例).在页面加载之前,要添加的数字是未知的,因此需要动态加载它们.下拉列表中填充了相同数量的菜单项,并且页面上还有javascript(使用jQuery),一次只显示一个控件,具体取决于下拉列表的状态.

每个用户控件都有两个应该生成异步回发的按钮,一个应该在所选值的更改上生成异步回发的下拉列表,以及一个应该生成同步回发的按钮.如果我没有动态生成控件,并且如果只有一个控件,结构将类似于:

<asp:UpdatePanel ID="myUpdatePanel" runat="server" UpdateMode="Conditional"
                 ChildrenAsTriggers="false">
    <ContentTemplate>
        <asp:TextBox ID="textBox1" runat="server" />
        <asp:TextBox ID="textBox2" runat="server" />
        <asp:Button ID="asyncButton1" runat="server" Text="Button1"
                    onclick="asyncButton1_Click" />
        <asp:DropDownList ID="asyncDropDown" ruant="server" AutoPostBack="true"
                    OnSelectedIndexChanged="asyncDropDown_SelectedIndexChanged" />
        <asp:Button ID="asyncButton2" runat="server" Text="Button2"
                    OnClick="asyncButton2_Click" />
        <asp:Button ID="syncButton" runat="server" Text="SyncButton"
                    OnClick="syncButton_Click" />
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="asyncButton1" EventName="Click" />
        <asp:AsyncPostBackTrigger ControlID="asyncButton2" EventName="Click" />
        <asp:AsyncPostBackTrigger ControlID="asyncDropDown"
            EventName="SelectedIndexChanged" />
        <asp:PostBackTrigger ControlID="syncButton" />
    </Triggers>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)

当然,ContentTemplate中的所有控件实际上都是每个用户控件的一部分.

在服务器端添加触发器似乎不起作用,因为没有ControlID似乎可以帮助UpdatePanel找到相关的控件.我可以使用控件的ID或控件的UniqueID,它不起作用,我得到一个错误的行

A control with ID 'ctl00$ContentPlaceHolder1$ctl01$asyncButton1' could not be
found for the trigger in UpdatePanel 'myUpdatePanel'.
Run Code Online (Sandbox Code Playgroud)

所以,我想知道是否需要在客户端注册触发器而不是使用ASP.NET Ajax.我发现 …

asp.net updatepanel asp.net-ajax asp.net-3.5

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

是否有"要处理的东西"设计模式的名称?

我偶尔会使用一种设计模式,我不知道它叫什么.也许它有一个名字,有人知道吗?

当我想遍历树状结构并在其所有节点上执行某些操作时,我会使用它.它是这样的:

nodes_to_handle = [root_node]
while nodes_to_handle:
    node = nodes_to_handle.pop()
    # handle node
    nodes_to_handle += node.get_neighbors()
Run Code Online (Sandbox Code Playgroud)

注意,结构不必是树; 例如,此模式可用于在数组中执行泛洪填充.

那么,这种设计模式是否有可接受的名称?

python algorithm design-patterns

5
推荐指数
1
解决办法
216
查看次数

使用相关系数的python中两个图像之间的百分比差异

我想比较两个图像块,如果它们完全相同,则结果必须为 1,如果它们匹配 60%,则答案必须为 0.6。

在 Matlab 中,我可以使用corr2命令来执行此操作,但在 python 中我找不到方法。我试过,numpy.corrcoef但它返回一个矩阵并scipy.signal.correlate2d返回相同的。

这是我尝试过的:

import numpy as np
import matplotlib.pyplot as plt
from skimage.filter import threshold_otsu
import matplotlib.cm as cm
import Image
import scipy
from PIL import Image as im
fname = 'testi.jpg'
image = Image.open(fname).convert("L")
arr = np.asarray(image)
global_thresh = threshold_otsu(arr)

global_otsu = arr >= global_thresh
global_otsu = np.invert(global_otsu).astype(int)
a1 = global_otsu[80:150,1350:1350+160]
fname1 = 'testi2.jpg'
image1 = Image.open(fname1).convert("L")
arr1 = np.asarray(image1)
global_thresh1 = threshold_otsu(arr1)

global_otsu1 = arr1 …
Run Code Online (Sandbox Code Playgroud)

matlab numpy image-processing scipy python-2.7

4
推荐指数
1
解决办法
4772
查看次数

推测相当于"存在"

我是Propel的新手并且一直在阅读文档.但是,我没有找到一个明确的等同于SQL的EXISTS和NOT EXISTS结构.例如,Linq in .NET有Any().在"惯用语"Propel中是否有以下等价物?

SELECT a.column1, a column2, a.etc
FROM   TableA a
WHERE  NOT EXISTS (SELECT 1
                   FROM   TableB b
                   WHERE  b.someIdColumn = a.someIdColumn
                   AND    b.aNullableDateColumn IS NULL)
Run Code Online (Sandbox Code Playgroud)

php sql propel

3
推荐指数
1
解决办法
3437
查看次数

apache/htaccess:如何为任何文件名显示一个内容

我想将表单重定向到不同的地址,例如thanks-a.html,thanks-b.html,...(为了能够为谷歌分析设置不同的目标),但页面内容将始终相同.

我的想法是在一个文件夹和.htaccess文件中有一个index.html页面,当调用任何不存在的文件名时,它会显示index.html.有人可以帮我写那个htaccess吗?

谢谢!

apache .htaccess mod-rewrite

2
推荐指数
1
解决办法
694
查看次数

GetType()在Type的实例上返回什么?

我在调试过程中遇到了这段代码.

private bool HasBaseType(Type type, out Type baseType)
{
    Type originalType = type.GetType();
    baseType = GetBaseType(type);
    return baseType != originalType;
}
Run Code Online (Sandbox Code Playgroud)

我最初的想法是,type.GetType()在方法的第一行总是会产生相当于typeof(System.Type),在上下文中对我来说似乎毫无意义.但是,MSDN建议Type重写的版本GetType()将被继承Object.然后,非静态Type.GetType()实际MSDN页面(不要与三个静态版本混淆)说该GetType()方法返回"当前类型".没有给出进一步的相关解释.

那么,originalType上述方法中的值是等于type还是为typeof(System.Type)?我从文档中不太确定.如果originalType是相当于type,这将是一个复制type,这样,如果该GetBaseType方法改变其参数,originalType仍然相当于type原来的形式,不管里面发生了什么GetBaseType

c# types .net-3.5

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

F#相当于一个公共C#泛型方法

我试图在F#中的类中创建一个公共方法.C#中的等价物是:

public void MyMethod<T>(string name, Thing<T> thingToProcess)
{
    // Do stuff
}
Run Code Online (Sandbox Code Playgroud)

在F#中,我正在尝试:

member public this.MyMethod<'T>((name : System.String), (thingToProcess : Thing<'T>)) =
    (* Do similar stuff *)
    ()
Run Code Online (Sandbox Code Playgroud)

此代码生成编译器错误:

错误FS0670:此代码不够通用.类型变量'T无法推广,因为它会逃避其范围.

如果我尝试以下,我可以编译:

member public this.MyMethod((name : System.String), (thingToProcess : Thing<_>)) =
    (* Some code *)
    ()
Run Code Online (Sandbox Code Playgroud)

但是,尝试从C#调用方法如下所示失败:

public void DoSomething<T>(Thing<T> thingToProcess)
{
    _instanceOfFSharpClass.MyMethod("A string", thingToProcess);
}
Run Code Online (Sandbox Code Playgroud)

编译错误:

'MyFSharpClass.MyMethod(string,Thing)'的最佳重载方法匹配包含一些无效参数.

建议?如何在F#中创建这种类型的方法?如果无法在F#中创建此方法,那么什么是合理的解决方法?我需要避免铸造Thing<T>Thing<object>,如果在所有可能的.

编辑:

这里有更多的F#代码.我会尽力坚持可能相关的部分.EnumWithFlags是一个C#程序集的枚举[FlagsAttribute]. cacheOne填充在此处未列出的其他方法中. IInterface在C#程序集中定义,只有一个方法,void ReceiveThing<T>(string name, Thing<T> thingToProcess).该功能TranslateThing有签名 …

generics f# c#-to-f#

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