当我的部分代码从未使用时,Resharper会发出警告; 这非常有帮助.
但是,我有很多类没有被其他代码直接引用.这些类仅用于依赖注入(DI)配置.
我使用spring.net进行DI.DI配置采用xml格式.
有什么方法可以告诉Resharper使用DI文件来检查未使用的类吗?
我知道我可以用以下方法压制Resharper警告:
// ReSharper disable UnusedMember.Global
public class TheClass : IInterfaceWiredUsingSpringDI
// ReSharper restore UnusedMember.Global
Run Code Online (Sandbox Code Playgroud)
但我不太喜欢这个 - 它很难阅读,我真的不想压制警告.
注意:
我在jetbrains论坛上发现了一种不那么突兀且更具可读性的方法来抑制警告.定义此自定义属性时:
[MeansImplicitUse]
public class IoCAttribute : Attribute { }
Run Code Online (Sandbox Code Playgroud)
然后你可以取消警告:
[IoC]
public class TheClass : IInterfaceWiredUsingSpringDI
Run Code Online (Sandbox Code Playgroud) 有没有办法用Spring.NET配置Acknowledgements?
在代码中它看起来像这样:
var msgQ = new MessageQueue(OrdersQueueName)
{
DefaultPropertiesToSend =
{
AcknowledgeType = AcknowledgeTypes.FullReachQueue |
AcknowledgeTypes.FullReceive,
AdministrationQueue = new MessageQueue(AckQueueName)
}
};
Run Code Online (Sandbox Code Playgroud)
可以用ProductTemplate吗?其他方式?
有没有办法在应用程序设置中创建一些可选字段.例如,对于一个客户端,我们需要在设置文件中使用一些基于客户端的设置,如下所示:
<?xml version="1.0"?>
<configuration>
<configSections>
<userSettings>
<setting name="Client_1_out_folder" serializeAs="String">
<value>c:\</value>
</setting>
<setting name="Some_other_setting" serializeAs="String">
<value>True</value>
</setting>
...
Run Code Online (Sandbox Code Playgroud)
而对于其他客户端我们Client_1_out_folder根本不需要它,所以保持配置文件清洁将很好地从配置文件中一起删除它.因此对于客户端2,配置文件的一部分看起来像:
<?xml version="1.0"?>
<configuration>
<configSections>
<userSettings>
<setting name="Some_other_setting" serializeAs="String">
<value>True</value>
</setting>
...
Run Code Online (Sandbox Code Playgroud) 我用我的git配置了kDiff3.
我需要的是看到两个分支之间的目录差异.我跑的时候
git difftool <headbranch>
命令它逐个打开所有文件.但那不是我想要的.
编辑:接受克里斯霍姆斯的回应,但如果有人想出更好的方法,总是准备好重构!谢谢!
使用MVP做一些winforms将实体传递给另一个视图的最佳方法是什么.
假设我有一个CustomerSearchView/Presenter,在doubleClick我想显示CustomerEditView/Presenter.我不希望我的视图知道模型,所以我不能创建一个ICustomer参数的ctor .
我的反应是,
CustomerSearchView创建一个新的CustomerEditView,创建它自己的演示者.然后我CustomerSearchView会做类似的事情:
var customerEditView = new CustomerEditView();
customerEditView.Presenter.Customer = this.Presenter.SelectedCustomer;
Run Code Online (Sandbox Code Playgroud)
其他可能的方法是一个CustomerDTO类,并使其CustomerEditView接受其中一个CustomerDTO,但我认为这是一项很简单的工作.
对不起基本的问题,但我发现的所有例子都没有达到这一点,这是一个棕色的项目,到目前为止使用的方法让我很头疼......
我读了http://www.codeproject.com/KB/architecture/MVC_MVP_MVVM_design.aspx,它说:
虽然它们很强大,但MVC和MVP都存在问题.其中之一是View状态的持久性.例如,如果作为域对象的Model对UI没有任何了解,并且View没有实现任何业务逻辑,那么我们将在哪里存储View的元素(如所选项)的状态?Fowler以Presentation Model模式的形式提出了一个解决方案.
我想知道为什么Presenter无法持有View状态?它已经拥有所有View逻辑.
据我所知,在MVC和MVP中,状态保持在View中.在PM和MVVM中,状态保存在Presentation Model中.为什么Presenter在这种特殊情况下不能跟踪PM并包含视图的状态?
这是另一篇文章说Presenter没有View状态,而是视图:http://www.codeproject.com/KB/aspnet/ArchitectureComparison.aspx
在joliver/EventStore中使用MongoDB persistance引擎导致错误Unknown discriminator value 'MyEvent'.问题只是在我尝试加载所有事件以重放事件时引起的this.storeEvent.Advanced.GetFrom(new DateTime(2010, 1,1))
这些问题是在ExtensionsMethods.cs中引起的
public class MyClassEvent : IDomainEvent { ... }
public static Commit ToCommit(this BsonDocument doc, IDocumentSerializer serializer)
{
if (doc == null)
return null;
var id = doc["_id"].AsBsonDocument;
var streamId = id["StreamId"].AsGuid;
var commitSequence = id["CommitSequence"].AsInt32;
var events = doc["Events"].AsBsonArray.Select(e => e.AsBsonDocument["Payload"].IsBsonDocument ? BsonSerializer.Deserialize<EventMessage>(e.AsBsonDocument["Payload"].AsBsonDocument) : serializer.Deserialize<EventMessage>(e.AsBsonDocument["Payload"].AsByteArray)).ToList();
var streamRevision = doc["Events"].AsBsonArray.Last().AsBsonDocument["StreamRevision"].AsInt32;
return new Commit(
streamId,
streamRevision,
doc["CommitId"].AsGuid,
commitSequence,
doc["CommitStamp"].AsDateTime,
BsonSerializer.Deserialize<Dictionary<string, object>>(doc["Headers"].AsBsonDocument),
events);
}
Run Code Online (Sandbox Code Playgroud)
我的配置是这样的:
Wireup.Init()
.UsingMongoPersistence(connectionName, new DocumentObjectSerializer())
.UsingBsonSerialization() …Run Code Online (Sandbox Code Playgroud) 我需要在bootstrap xeditable表单中设置文本框的最大长度.事情是,出现的文本框是表单的构建功能,所以我无法将maxlength设置为html属性.我尝试使用jquery但它的没有锻炼.(我无法附上截图)请帮我解决这个问题,
我正在使用spring.net IOC依赖注入为我的asp.net Web应用程序设置我的xml配置文件.我在web.config中引用了每个配置文件.spring.net配置文件(settings.xml)中的设置示例如下:
<object id="obj1"
type="NS.Common.Cache.Class, NS.Common"
singleton="true"
init-method="Initialize"
destroy-method="Dispose">
<property name="Name" value="My Name" />
</object>
Run Code Online (Sandbox Code Playgroud)
一切正常.
现在我在多个环境中安装我的Web应用程序,所以我正在为环境创建一个spring.net配置文件,例如.dev,qa,prod.
因此,在安装应用程序时,web.config中会引用适用的环境spring文件.这是自动安装程序的一部分.
在qa环境文件中,我想将"obj1"上面的对象重新定义为:
<object id="obj1"
type="NS.Common.Cache.Class2, NS.Common"
singleton="true"
init-method="Initialize"
destroy-method="Dispose">
<property name="Name" value="My New Name" />
</object>
Run Code Online (Sandbox Code Playgroud)
但是,由于这是自动的(添加对环境文件的引用),因此不会更改settings.xml文件.
现在引用具有相同id的已定义对象的2个文件 - 这会导致主要问题,因为将发生运行时错误.
是否有任何方法可以包含在qa.xml和flag等中以突出显示此对象定义覆盖具有相同对象ID的任何其他xml文件中的任何其他已定义对象?