小编Ada*_*m B的帖子

在C#中引发事件的单元测试

我有一些引发PropertyChanged事件的代码,我希望能够对事件正确引发的单元测试.

提升事件的代码就像

public class MyClass : INotifyPropertyChanged
{
   public event PropertyChangedEventHandler PropertyChanged;  

   protected void NotifyPropertyChanged(String info)
   {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
   }  

   public string MyProperty
   {
       set
       {
           if (_myProperty != value)
           {
               _myProperty = value;
               NotifyPropertyChanged("MyProperty");
           }
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

我从单元测试中的以下代码中获得了一个很好的绿色测试,它使用了委托:

[TestMethod]
public void Test_ThatMyEventIsRaised()
{
    string actual = null;
    MyClass myClass = new MyClass();

    myClass.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
    {
         actual = e.PropertyName;
    };

    myClass.MyProperty = "testing";
    Assert.IsNotNull(actual);
    Assert.AreEqual("MyProperty", actual); …
Run Code Online (Sandbox Code Playgroud)

c# events unit-testing

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

Visual Studio Code(Mac OS)重命名符号不起作用

当我右键单击并尝试在Mac OS Mojave上的Microsoft Visual Studio Code中重命名变量名时,会提示您输入新名称,我按Enter键,但没有任何反应。

我安装了Python扩展和Latex扩展。

通常没有错误,什么也没有。

有时,会弹出一个小框,上面写着“无结果。无结果”。

我选择的python解释器是Conda安装。

我确保安装了绳索和pylint。

预期的行为:右键单击>重命名符号>键入新名称>输入>重命名变量的所有实例。

观察到的行为右键单击>重命名符号>输入新名称>输入>变量在任何地方都具有相同的名称,包括重命名位置。

python refactoring rename anaconda visual-studio-code

8
推荐指数
2
解决办法
1019
查看次数

如何在Jupyter笔记本中制作Tufte风格的旁注?

我是 Jupyter 笔记本的新手,也是 Markdown 的新手。它似乎是一个非常强大的工具,用于共享混合 python 代码和文本。我想做的一件事是使用 Markdown 语法对旁注使用 Tufte 风格的格式。

类似于https://bookdown.org/yihui/rmarkdown/tufte-handouts.html

也许这个功能比看起来更容易,因为上面的链接似乎正在使用 markdown,所以我怀疑这是可能的。但是我似乎不知道如何解决这个问题。

我读到:How do I set custom CSS for my IPython/IHaskell/Jupyter Notebook?

%%html
<style>
// add your CSS styling here
</style>
Run Code Online (Sandbox Code Playgroud)

这显示出潜力。我对CSS 的了解非常少。

然而,由于我的菜鸟,我不知道如何向 Jupyter 笔记本添加这样的自定义功能。任何帮助,将不胜感激。

css python markdown tufte jupyter-notebook

6
推荐指数
0
解决办法
607
查看次数

Unity:需要在返回池时重置池化对象.也许使用ScriptableObject?

我最近一直在尝试统一对象池,以便一次加速几个游戏对象的实例化.

但是,由于这些是相当复杂的对象,我需要在它们返回池中时重置它们.

我读到使用ScriptableObject可能是存储默认值以便轻松重置的好方法.但为了做到这一点,我需要在运行时加载一个新的ScriptableObject来存储对象的实际值.

所以在伪代码中,我有一个带public MyScriptableData data和的类public MyScriptableData defaults

1)使用默认的ScriptableObject创建新的池化对象data = defaults;;

2)做一些在对象生命周期内改变脚本对象值的东西

3)取消激活,然后将池化对象返回池,将scriptableObject重置为默认值(data = defaults;再次).

我有3个主要问题:

A)我不确定如何实际实现这一点.在我看来,在步骤2中,默认值将被更改.因此,重置为默认值将不起作用.我考虑过使用创建脚本对象的新实例

data = ScriptableObject.CreateInstance<MyScriptableData>();

但是,我将如何复制默认值defaults,确保永远不会更改默认值?我希望默认值可以在Unity编辑器中作为资产进行编辑.

B)如果我使用CreateInstance,性能会不好?我正在做这个对象池的全部原因是为了降低对象实例化的性能成本.我不想通过实例化脚本化对象来重新引入慢速代码.

C)这种方法好吗?或者是否有更好的方法在返回池之前重置对象?

编辑基于一些答案:我已经有一个具有很长字段列表的设置,然后将这些字段的默认值存储在字典中.但我发现每次我想添加/更改/删除字段时,我都必须在几个位置更改代码

ATTEMPTED SOLUTION(但错误,见下文):我为ScriptableObject创建了一个扩展方法:

using UnityEngine;
using System.Reflection;

public static class ScriptableObjectExtension {

    public static T ShallowCopy<T> (this T orig) where T : ScriptableObject {
        T copiedObject = ScriptableObject.CreateInstance<T> ();
        FieldInfo[] myObjectFields = orig.GetType ().GetFields (
                                         BindingFlags.NonPublic | BindingFlags.Public |
                                         BindingFlags.Instance);

        foreach (FieldInfo fi in myObjectFields) {
            fi.SetValue (copiedObject, …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine object-pooling unity5

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

在 F# 中可以使用 %A 创建一个速记函数来打印吗

我刚刚开始第一次使用 F#,使用 VSCode 和交互式笔记本。我对不得不不断地写出来感到非常恼火

printfn "%A" something
Run Code Online (Sandbox Code Playgroud)

因为它杀死了我的内心。

在每个文件的开头简单地写:

let print(something) = printfn "%A" something

// then use with

print(4 + 3) // int
print(3.7 + 1.1) //float
print("this is so much better") // text
Run Code Online (Sandbox Code Playgroud)

为什么这个不内置?

f# f#-interactive visual-studio-code

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