我相信以下VB.Net代码相当于正在进行的C#代码; 但VB.Net测试失败 - 从未调用处理Lambda的事件.
到底是怎么回事?
VB.Net版本 - 失败:
<TestFixture()> _
Public Class TestClass
<Test()> _
Public Sub EventTest()
Dim eventClass As New EventClass
Dim eventRaised As Boolean = False
AddHandler eventClass.AnEvent, Function() (eventRaised = True)
eventClass.RaiseIt()
Assert.IsTrue(eventRaised)
End Sub
End Class
Public Class EventClass
Public Event AnEvent()
Public Sub RaiseIt()
RaiseEvent AnEvent()
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
C#版本 - 通过:
[TestFixture]
public class TestClass
{
[Test]
public void EventTest()
{
var eventClass = new EventClass();
var eventRaised = false;
eventClass.AnEvent += …Run Code Online (Sandbox Code Playgroud) MS CRM Dynamics 4.0包含MS WF引擎.内置设计器允许创建顺序工作流,其中活动可以本机访问CRM实体.
是否有可能:
我有一个线程安全对象,创建起来很昂贵,需要通过我的应用程序(Lucene.Net IndexReader)提供.
该对象可能变为无效,此时我需要重新创建它(IndexReader.IsCurrent为false,需要使用IndexReader.Reopen的新实例).
我希望能够使用IoC容器(StructureMap)来管理对象的创建,但是如果可能的话,我无法解决.感觉就像某种"有条件的单身"生命周期.
StructureMap是否提供了这样的功能?还有其他建议吗?
鉴于以下情况,我不希望编译器允许从base属性派生的多个属性,因为它们设置为AllowMultiple = false.事实上它编译没有问题 - 我在这里缺少什么?
using System;
[AttributeUsage(AttributeTargets.Property,AllowMultiple=false,Inherited=true)]
abstract class BaseAttribute : Attribute { }
sealed class DerivedAttributeA : BaseAttribute { }
sealed class DerivedAttributeB : BaseAttribute { }
class Sample1
{
[DerivedAttributeA()]
[DerivedAttributeB()]
public string PropertyA{ get; set; } // allowed, concrete classes differ
[DerivedAttributeA()]
[DerivedAttributeA()]
public string PropertyB { get; set; } // not allowed, concrete classes the same, honours AllowMultiple=false on BaseAttribute
}
Run Code Online (Sandbox Code Playgroud) 给定两个.Net类型,类型A和类型B,如何确定对类型B的所有属性调用(包括类型A的子类)?
c# ×3
.net ×1
attributes ×1
crm ×1
dynamics-crm ×1
events ×1
inheritance ×1
lambda ×1
lucene.net ×1
reflection ×1
singleton ×1
structuremap ×1
unit-testing ×1
vb.net ×1
workflow ×1