我可以使用TypeDescriptor.AddAttributes在运行时向属性添加属性.如何为方法和参数执行相同的操作?(也许2个单独的问题......)
在使用遗留代码并尝试创建测试时,我经常从类或方法中分离出依赖关系,因此我可以使用模拟来为这些依赖项编写单元测试.依赖关系通常以调用静态类和使用构造函数中的new关键字或该类中其他位置创建的对象的形式出现.
在大多数情况下,静态调用通过包装静态依赖项来处理,或者如果它以StaticClass.Current.MethodCall()形式的单例模式(或类似)通过其接口传递该依赖项而改为构造函数.
在大多数情况下,只需在构造函数中传递该接口即可替换构造函数中new关键字的使用.
在大多数情况下,在类的其他部分中使用new关键字,可以通过与上面相同的方法处理,也可以根据需要创建工厂,并在构造函数中传递工厂的接口.
我总是使用Resharpers重构工具来帮助我解决所有这些问题,但是大多数事情仍然是手工劳动(可能是自动化的),对于一些遗留的类和方法来说,这可能是一个非常繁琐的过程.是否有任何其他重构插件和/或工具可以帮助我完成此过程?是否"通过一次点击"从重构工具中突破了所有依赖性?=)
听起来像所有这些步骤对于许多开发人员而言是常见的并且是一个常见问题,在我尝试将插件写入Resharper或CodeRush之前,我不得不问,因为有人可能已经尝试过这个...
添加:
反思下面的答案:即使您可能不想一次性突破所有内容(一次点击总突破可能会导致更多问题而不是它有帮助)仍然能够简单地突破1个方法依赖关系,或轻松地突破1-2个依赖关系,会有很大的不同.
此外,重构代码有一个"尝试,看看只是为了学习所有东西如何组合在一起发生了什么"的措施,并且一键式总爆发将有助于该过程吨,即使你不检查该代码..
如何在第一个没有"-"使用linq 开头的元素之后检索所有元素?
var arr = new[] {"-s1", "-s2", "va", "-s3", "va2", "va3"};
var allElementsAfterVA = from a in arr where ???? select a;
Run Code Online (Sandbox Code Playgroud)
我想allElementsAfterVA成为"-s3", "va2", "va3"
是否有一种简单的方法可以在Visual Studio中的开放测试类中运行所有测试.我发现这是我最常需要做的事情.
大多数情况下,我使用Resharpers或TestDriven.NET测试人员,我无法在testrunner中找到任何简单的方法.在Resharper中,有一个"添加所有打开的测试到会话"功能会很好,但经过大量的谷歌搜索,我找不到一个,或任何其他简单的方法来做到这一点.
是否有工具,插件或什么不做?
如何使用windbg转储结构,是否有类似dumpobject的dumpstruct命令?或者可以dumpobject dump结构?
我们有一个适用于任何负载平衡调度的应用程序,可以是随机选择,随机DNS或循环.现在我们考虑在我们的项目中使用SignalR,我们想知道SignalR如何处理这种负载平衡方案.
还没有测试任何东西,我们在想如果传输使用EventSource或WebSockets,SignalR在这种情况下是否可能运行良好,但是如果它回退到长轮询呢?
我很难在Google上搜索有关此主题的更详细信息.
我正在为自动映射器地图编写测试。映射中的目标成员之一需要一个值解析器,并且该值解析器具有注入的服务依赖项。我想为解析器使用真正的实现(因为那是map im测试的一部分),但我想对解析器具有的依赖项使用模拟。
当然,我想避免在测试中使用ioc容器,但是如何在没有容器的情况下轻松解决我的价值解析器的依赖性呢?
这是我相当简化的示例,在实际情况下,有几个解析器有时带有很多依赖关系,我真的不喜欢在测试中基本上实现自己的依赖解析器。我应该使用轻质的ioc容器吗?
[TestFixture]
public class MapperTest
{
private IMyService myService;
[SetUp]
public void Setup()
{
Mapper.Initialize(config =>
{
config.ConstructServicesUsing(Resolve);
config.AddProfile<MyProfile>();
});
}
public T Resolve<T>()
{
return (T) Resolve(typeof (T));
}
public object Resolve(Type type)
{
if (type == typeof(MyValueResolver))
return new MyValueResolver(Resolve<IMyService>());
if (type == typeof(IMyService))
return myService;
Assert.Fail("Can not resolve type " + type.AssemblyQualifiedName);
return null;
}
[Test]
public void ShouldConfigureCorrectly()
{
Mapper.AssertConfigurationIsValid();
}
[Test]
public void ShouldMapStuff()
{
var source = new Source() {...};
var …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个简单的解决方案来序列化和存储包含配置,应用程序状态和数据的对象.它是一个简单的应用程序,它不是很多数据.速度没问题.我希望它在进行中.我希望它在texteditor中比xml更容易编辑.
我无法找到.net的任何文件数据库,可以在进程中处理它.只是序列化为xml我不确定我想要做什么,因为它的... xml.序列化为JSON似乎非常具有javascript,我不会在javascript中使用这些数据.
我认为有很好的方法可以做到这一点,但我仍然倾向于使用JSON,尽管它的javascript inflenation.
这个例子是对真正问题的简化,但我怎样才能编译它呢?我希望泛型约束能够传播.
由于T是TClass而TClass是一个类,为什么不是T类?
public class MyClass<TClass> where TClass : class
{
public void FuncA<Ta>() where Ta : class
{
}
public void FuncB<Tb>() where Tb : TClass
{
}
public void Func<T>()
where T : TClass
{
FuncA<T>();
FuncB<T>();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
这实际上有效.Eric Lippert让我思考,谢谢.
由于T是TClass而TClass是TAnotherType,因此T实际上是TAnotherType.
public class MyClass<TClass, TAnotherType> where TClass : TAnotherType
{
public void FuncA<Ta>() where Ta : TClass
{
}
public void FuncB<Tb>() where Tb : TAnotherType
{
}
public void Func<T>()
where T : TClass
{ …Run Code Online (Sandbox Code Playgroud) 我试图创建一个淘汰绑定到jquery ui可调整大小的小部件.我的自定义绑定绑定到视图模型上的2个不同的可观察对象,即"left"和"width".
<div class="layer" data-bind="resizable: {left: left, width: width}">
<div class="left ui-resizable-handle ui-resizable-w"><<<</div>
<div class="right ui-resizable-handle ui-resizable-e">>>></div>
</div>
ko.bindingHandlers.resizable = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
var values = valueAccessor();
$(element).resizable({
handles: null,
resize: function(event, ui) {
values.left(ui.position.left);
values.width(ui.size.width);
}
});
},
update: function(element, valueAccessor, allBindingsAccessor, viewModel) {
var values = valueAccessor();
$(element)
.css('left', values.left() + 'px')
.css('width', values.width() + 'px')
;
}
};
var vm = {
left: ko.observable(50),
width: ko.observable(300)
};
ko.applyBindings(vm);
Run Code Online (Sandbox Code Playgroud)
问题是,当我使用左句柄调整div时,2个observable会更新,从而在同一个绑定中触发2次更新.我需要它才能触发一次更新.
我对这种绑定有什么选择?创建绑定到多个observable的绑定的推荐方法是什么?
我的真实世界代码更复杂,但我认为iv将我的问题归结为这个小提琴:
我该怎么做呢?我已经看到了一个解决方案,不使用单一的正则表达式ruby因为ruby不支持loookaround断言.但是在c#中有可能吗?
[Test]
public void RarArchiveFirstFileNameShouldMatch() {
var regex = new Regex(@"\.(rar|001)$", RegexOptions.IgnoreCase | RegexOptions.Singleline);
Assert.That(regex.IsMatch("filename.001"));
Assert.That(regex.IsMatch("filename.rar"));
Assert.That(regex.IsMatch("filename.part1.rar"));
Assert.That(regex.IsMatch("filename.part01.rar"));
Assert.That(regex.IsMatch("filenamepart44.rar"));
Assert.That(regex.IsMatch("filename.004"), Is.False);
Assert.That(regex.IsMatch("filename.057"), Is.False);
Assert.That(regex.IsMatch("filename.r67"), Is.False);
Assert.That(regex.IsMatch("filename.s89"), Is.False);
Assert.That(regex.IsMatch("filename.part2.rar"), Is.False);
Assert.That(regex.IsMatch("filename.part04.rar"), Is.False);
Assert.That(regex.IsMatch("filename.part11.rar"), Is.False);
}
Run Code Online (Sandbox Code Playgroud) 阅读 http://www.pragprog.com/magazines/2010-03/javascript-its-not-just-for-browsers-any-more后, 我想知道哪个是开发服务器端JavaScript应用程序的最佳IDE?
我想要一个很好的开发环境commonjs和node等等.最好是窗户,但任何东西都很有趣.是否有任何IDE具有一些漂亮的重构工具,可能是一些智能感知功能等等.或者它是记事本++ ftw?
c# ×8
.net ×2
attributes ×1
automapper ×1
commonjs ×1
dependencies ×1
generics ×1
ide ×1
javascript ×1
knockout.js ×1
linq ×1
node.js ×1
poco ×1
refactoring ×1
regex ×1
resharper ×1
signalr ×1
sos ×1
storage ×1
struct ×1
test-runner ×1
windbg ×1