小编cbp*_*cbp的帖子

找出ASP.NET WebForms中控件的生命周期的哪个阶段

从控件的外部,是否可以找出Page LifeCycle(Init,Load,PreRender等)的哪个阶段,特定控件或页面是什么?

例如,在伪代码中:

if myControl.CurrentLifeCycle == Lifecycle.Init
{ do something }
Run Code Online (Sandbox Code Playgroud)

asp.net

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

我有什么选项可以自动绑定NInject

而不是手动必须绑定每个类,建议使用哪些方法和模式来自动设置绑定?

例如,绝大多数绑定看起来像这样:

Bind<ICustomerRepository>.To<CustomerRepository>();
Run Code Online (Sandbox Code Playgroud)

一旦模块变大,你就可以得到100个看起来完全相同的绑定.这可以自动化吗?

ninject

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

Spec#足够稳定吗?

这里有人经常使用Spec#吗?在我开始使用它之前,我想知道它是否足够稳定和强大.看起来语法正在影响c#4.0,这有望在4.0发布后更容易升级.思考?

design-by-contract spec# c#-4.0

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

带有导入和命名空间的XSD

嗨,我试图了解XSD,XML和命名空间,但我不能按照我希望的方式工作.

我有一个XSD,目前,这样开始:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.example.com">
    <xs:import namespace="http://www.example.com" schemaLocation="Include.xsd" />
Run Code Online (Sandbox Code Playgroud)

如您所见,它会导入另一个xsd文件,该文件的开头如下:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" 
           targetNamespace="http://www.example.com" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://www.example.com">
Run Code Online (Sandbox Code Playgroud)

然后我有一些基于这个模式的xml文档:

<foobar>
    <whatever>....
Run Code Online (Sandbox Code Playgroud)

基本上我不关心命名空间是什么,我只是想让这件事工作.以前我没有使用任何命名空间,但似乎我必须使用它们才能将一个XSD导入另一个.我不想做的是必须为我的xml文档中的所有元素提供前缀.

为了实现这一点,我需要在XSD和XML文档中的各种属性(targetNamespace,namespace,xmlns,elementFormDefault等)中使用哪些值组合?

目前,导入的XSD文档中定义的任何元素都需要XML中的命名空间限定.

xml import xsd namespaces

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

C#:避免因重写ToString而导致的错误

我发现在我的代码中经常发生以下错误,并且想知道是否有人知道一些避免它的好策略.

想象一下这样的一个类:

public class Quote
{
   public decimal InterestRate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在某些时候,我创建了一个利用利率的字符串,如下所示:

public string PrintQuote(Quote quote)
{
    return "The interest rate is " + quote.InterestRate;
}
Run Code Online (Sandbox Code Playgroud)

现在想象一下,我将InterestRate属性从小数重构为它自己的类:

public class Quote
{
    public InterestRate InterestRate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

...但是说我忘了重写InterestRate类中的ToString方法.除非我仔细查找InterestRate属性的每个用法,否则我可能永远不会注意到它在某些时候被转换为字符串.编译器当然不会选择它.我唯一的救世主机会是通过整合测试.

下次我调用PrintQuote方法时,我会得到一个这样的字符串:

"利率为Business.Finance.InterestRate".

哎哟.如何避免这种情况?

c# tostring

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

Linq到NHibernate:与众不同

我试图使用Linq-to-NHibernate获取以下SQL输出:

SELECT DISTINCT Name, at.Year FROM MyTable mt
INNER JOIN AnotherTable at ON at.Id = mt.AnotherTableId
Run Code Online (Sandbox Code Playgroud)

Name和Year属性将包含在一个新类中,因此C#代码将如下所示:

Session.Linq()
   .Select(x => new FooBar { Name = x.Name, Year = x.AnotherTable.Year }))
   .ToList();
Run Code Online (Sandbox Code Playgroud)

如何让DISTINCT关键字出现在sql查询中?

.net sql linq-to-nhibernate

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

是否可以模拟NLog日志方法?

是否可以/使用Rhino Mocks或类似方法模拟NLog日志方法?

nlog

6
推荐指数
2
解决办法
2429
查看次数

升级到3.1后,NHibernate Validator会抛出System.NotSupportedException

有没有遇到过这个?

升级到NHibernate 3.1后,我在运行NUnit测试用例时从NHibernate Validator收到以下异常:

System.NotSupportedException:动态程序集中不支持调用的成员.在NHibernate.Validator的NHibernate.Validator.Cfg.XmlMappingLoader.GetXmlMappingFor(Type type)的NHibernate.Validator.Cfg.XmlMappingLoader.AddResource(汇编汇编,String资源)的System.Reflection.Emit.InternalAssemblyBuilder.GetManifestResourceStream(String name)处.在NHibernate.Validator的NHibernate.Validator.Engine.ClassValidator.InitValidator(Type clazz,IDictionary`2 nestedClassValidators)的NHibernate.Validator.Engine.JITClassMappingFactory.GetClassMapping(Type clazz,ValidatorMode模式)中的Engine.JITClassMappingFactory.GetExternalDefinitionFor(Type type).在NHibernate.Validator.Engine.ValidatorEngine.GetClassValidator(Type entityType)的NHibernate.Validator.Engine.StateFullClassValidatorFactory.GetRootValidator(Type type)中的Engine.ClassValidator..ctor(Type clazz,IConstraintValidatorFactory constraintValidatorFactory,IDictionary`2 childClassValidators,IClassValidatorFactory factory)at Niber的NHibernate.Validator.Engine.ValidatorEngine.GetElementOrNew(Type entityType)Hibernate.Validator.Engine.ValidatorEngine.InternalValidate(Object entity,Object [] activeTags)at NHibernate.Validator.Ealine.ValidatorEngine.Validate(Object entity,Object [] activeTags)at NHibernate.Validator.Event.ValidateEventListener.Validate(Object entity) ,EntityMode模式)NHibernate.Validator.Event.ValidatePreUpdateEventListener.OnPreUpdate(PreUpdateEvent事件),位于d:\ CSharp\NH\NH \nhibernate\src\NHibernate\Action\EntityUpdateAction.cs中的NHibernate.Action.EntityUpdateAction.PreUpdate()中: NH中的NHibernate.Action.EntityUpdateAction.Execute()中的第200行:\ CSharp\NH\NH \nhibernate\src\NHibernate\Action\EntityUpdateAction.cs:第58行,位于NH的NHibernate.Engine.ActionQueue.Execute(IExecutable executable)中:\ CSharp\NH\NH \nhibernate\src\NHibernate\Engine\ActionQueue.cs:位于d:\ CSharp\NH\NH \nhibernate\src\NHibernate \中的NHibernate.Engine.ActionQueue.ExecuteActions(IList列表)中的第136行Engine\ActionQueue.cs:位于d:\ CSharp\NH\NH \nhibern的NHibernate.Engine.ActionQueue.ExecuteActions()中的第126行 ate\src\NHibernate\Engine\ActionQueue.cs:位于d:\ CSharp\NH\NH \nhibernate\src\NHibernate\Event\Default\AbstractFlushingEventListener中的NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions(IEventSource会话)的第170行. cs:第23行:NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent事件),位于d:\ CSharp\NH\NH \nhibernate\src\NHibernate\Event\Default\DefaultFlushEventListener.cs:第19行,位于NHibernate.Impl.SessionImpl .FlT中的.Flush():CSharp\NH\NH \nhibernate\src\NHibernate\Impl\SessionImpl.cs:FooTest.cs中TestDataAccess.FooTest.TestFoo()的第1472行

正如您从堆栈跟踪中看到的那样,当刷新会话并且NHibernate Validator执行其操作时会发生错误.

更新我试过单步执行NH Validator代码,似乎在某些时候它试图验证实体的Castle代理,而不是底层实体本身.这就引起了麻烦.不知道该怎么办......

更新如果我使用LinFu ProxyFactoryFactory而不是Castle,问题就会消失.不幸的是,LinFu给了我其他问题所以我不想使用它.

nhibernate nhibernate-validator

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

在Web浏览器中优先处理图像下载的技术

我有一个包含许多缩略图(约100个)的网页.当您单击其中一个缩略图时,会创建一个模态弹出窗口,这实际上是iframe中的新网页.这个新网页包含1张大图.

当用户在所有100个缩略图在父页面上完成下载之前打开弹出窗口时,会出现问题.用户现在必须等待很长时间才能看到弹出窗口中的大图像,因为浏览器不知道要将这个新图像优先于它已经尝试检索的缩略图.

有关解决这个问题的任何想法?

html javascript browser

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

为什么SQL Server不会使用我的计算列执行索引查找

我正在使用SQL Server 2008,它拒绝对我的索引执行搜索,该索引覆盖计算列.

我的表看起来像这样:

CREATE TABLE Person
{
    Id uniqueidentifier NOT NULL,
    InsertDate datetime NOT NULL,
    PhoneNumber NULL,
    PhoneNumberComparable AS (MakePhoneNumberComparable(PhoneNumber)) PERSISTED,
    ... etc...
}
Run Code Online (Sandbox Code Playgroud)

ID列上有一个聚簇主键索引,还有InsertDate列上的索引.

PhoneNumberComparable计算列上有一个索引,如下所示:

CREATE NONCLUSTERED INDEX IX_Person_PhoneNumberComparable ON Person
(
    PhoneNumberComparable ASC
)
Run Code Online (Sandbox Code Playgroud)

索引都具有最新的统计信息.

我的查询如下所示:

SELECT TOP 20 * FROM Person
WHERE PhoneNumberComparable = @PhoneNumber
ORDER BY InsertDate DESC
Run Code Online (Sandbox Code Playgroud)

默认情况下,SQL Server决定使用InsertDate上的索引而不是PhoneNumberComparable上的索引,从而导致性能非常差.

如果我尝试强制使用电话号码索引,通过向查询添加WITH(INDEX = IX_Person_PhoneNumberComparable),SQL将执行扫描而不是搜索.

如果我尝试使用FORCESEEK查询提示,那么SQL Server会给我以下错误:

由于此查询中定义的提示,查询处理器无法生成查询计划.重新提交查询而不指定任何提示,也不使用SET FORCEPLAN.

所以基本上,由于某种原因,SQL Server拒绝寻求我的索引!为什么?

编辑

根据评论中的建议,我简化了查询,但问题仍然存在(执行主键扫描而不是搜索电话号码索引):

SELECT TOP 20 PhoneNumberComparable  FROM Person
WHERE PhoneNumberComparable = @PhoneNumber
Run Code Online (Sandbox Code Playgroud)

sql-server

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