小编Igo*_*aka的帖子

我应该单元测试XML模式吗?

我正处于为我的工作的企业应用程序编写XML模式的最初阶段.要验证的XML代表一个应用程序 - 类似于Winforms - 表单,网格,菜单等但没有布局.

XSD的主要目的不是验证XML,而是为XML文件添加设计时可发现性,以便获得可用元素和属性的IntelliSense.

当我编写模式时,我发现自己正在执行TDD的元素并根据模式验证文档,更改文档或模式中的元素/属性以使验证无法确保我正确地编写模式.

这让我想到了我是否应该对模式进行单元测试,只是在其中抛​​出一些XML的排列,并确保它的行为方式如此.

这对我来说肯定是有意义的,因为我的XSD-fu很糟糕,我想更加确定XSD,它实际上是一个规范本身,是正确的.

tdd xsd unit-testing

5
推荐指数
1
解决办法
2397
查看次数

在Windows Phone 7上使用WCF的System.UnsupportedException

有没有人能够在Windows Phone Series 7模拟器上使用WCF进行通信?

在过去的两天里我一直在努力,而这正好适合我.我可以在Silverlight 3和Silverlight 4中使用普通的Silverlight控件,但不能使用手机版本.这是我尝试过的两个版本:

版本1 - 使用异步模式

BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
EndpointAddress endpointAddress = new EndpointAddress("http://localhost/wcf/Authentication.svc");
Wcf.IAuthentication auth1 = new ChannelFactory<Wcf.IAuthentication>(basicHttpBinding, endpointAddress).CreateChannel(endpointAddress);

AsyncCallback callback = (result) =>
{

    Action<string> write = (str) =>
    {
        this.Dispatcher.BeginInvoke(delegate
        {
            //Display something
        });
    };

    try
    {
        Wcf.IAuthentication auth = result.AsyncState as Wcf.IAuthentication;
        Wcf.AuthenticationResponse response = auth.EndLogin(result);
        write(response.Success.ToString());
    }
    catch (Exception ex)
    {
        write(ex.Message);
        System.Diagnostics.Debug.WriteLine(ex.Message);
    }
};

auth1.BeginLogin("user0", "test0", callback, auth1);
Run Code Online (Sandbox Code Playgroud)

此版本在此行中打破:

Wcf.IAuthentication auth1 = new ChannelFactory<Wcf.IAuthentication>(basicHttpBinding, endpointAddress).CreateChannel(endpointAddress);
Run Code Online (Sandbox Code Playgroud)

投掷System.NotSupportedException.例外情况不是很具描述性,而且callstack同样不是很有用: …

wcf silverlight-4.0 windows-phone-7

4
推荐指数
1
解决办法
3351
查看次数

WPF + MvvM + Prism

我是Wpf和Mvvm世界的新手,但我发现了几个例子,并且发现有一些不同的方式来实例化模型.我想知道最好/最正确的方法.两种方式都使用Unity

我发了什么:

var navigatorView = new MainView();
navigatorView.DataContext = m_Container.Resolve<INavigatorViewModel>();
m_RegionManager.Regions["NavigatorRegion"].Add(navigatorView);
Run Code Online (Sandbox Code Playgroud)

我做了什么:

var navigatorView = m_Container.Resolve<MainView>;
m_RegionManager.Regions["NavigatorRegion"].Add(navigatorView);
Run Code Online (Sandbox Code Playgroud)

并且我更改了构造函数以接收viewmodel,因此我可以将datacontext指向它:

public MainView(NavigatorViewModel navigatorViewModel)
{
 this.DataContext = navigatorViewModel;
}  
Run Code Online (Sandbox Code Playgroud)

其他例子我发现了另一种方式:

...vm = new viewmodel 
...m = new model
v.model = vm;
Run Code Online (Sandbox Code Playgroud)

获取/设置DataContext

干杯

wpf prism unity-container mvvm

4
推荐指数
1
解决办法
2610
查看次数

.NET - 非常奇怪的NullReferenceException?

如何NullReferenceException在以下场景中获得?

 Dim langs As IEnumerable(Of SomeCustomObject) = //some LINQ query
 If langs Is Nothing Then Return Nothing 
 If langs.Count = 1 Then //NullReferenceException here
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?Debug显示这langs实际上只是一个没有任何结果的LINQ queryresult ...

linq vb.net nullreferenceexception

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

Esent和Ravendb中的.Net Finalizer Order/Semantics

帮帮我理解 我读过这个

"终结者的执行时间和顺序无法预测或预先确定"

正确?

但是看看RavenDB源代码TransactionStorage.cs,我看到了这一点

~TransactionalStorage()
{
try
{
 Trace.WriteLine(
  "Disposing esent resources from finalizer! You should call TransactionalStorage.Dispose() instead!");
 Api.JetTerm2(instance, TermGrbit.Abrupt);
}
catch (Exception exception)
{
  try
  {
   Trace.WriteLine("Failed to dispose esent instance from finalizer because: " + exception);
   }
   catch
   {
   }
 }
}
Run Code Online (Sandbox Code Playgroud)

API类(属于Managed Esent)可能会使用SafeHandle对本机资源进行处理?

因此,如果我理解正确,可以在TransactionStorage之前完成本机句柄SafeHandle,这可能会产生不良影响,也许为什么Ayende在此处添加了catch all子句?

实际上潜入Esent代码,它不使用SafeHandles.

根据CLR通过C#这是危险的吗?

    internal static class SomeType {  
   [DllImport("Kernel32", CharSet=CharSet.Unicode, EntryPoint="CreateEvent")]  

 // This prototype is not robust  
   private static extern IntPtr CreateEventBad( 
      IntPtr pSecurityAttributes, Boolean manualReset, Boolean initialState, String name);  


 // …
Run Code Online (Sandbox Code Playgroud)

c# clr garbage-collection esent ravendb

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

模拟接口使用MOQ 4.0重新定义属性

在较旧版本的MOQ中,以下代码可以正常工作(例如3.1.416.3).它不再了.如何将模拟更改为工作?问题是接口继承了另一个接口并重新定义了一个字段.因此我的模拟现在需要配置两个字段的值,因为这在我Code1()Code2()调用中使用

public interface I
{
    string field { get; }
}

public interface IModi : I
{
    new string field { get; set; }
}

public class P : IModi
{
    private string val;

    string I.field
    {
        get { return val; }
    }

    public string field
    {
        get { return val; }
        set { val = value; }
    }

    public static void Code1(I p)
    {
        Console.WriteLine(p.field);
    }

    public static void Code2(IModi p)
    {
        Code1(p);
        Console.WriteLine(p.field);
    } …
Run Code Online (Sandbox Code Playgroud)

unit-testing moq

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

从数组中获取未定义的值

谈话很便宜; 我宁愿展示代码:

//global var
var siblings = [];

var rand = new Date().getTime();
siblings.push('uin_' + rand);
alert(siblings['uin_' + rand]); // undefined
Run Code Online (Sandbox Code Playgroud)

为什么未定义?我基本上想要实现的是拥有一个全局对象,该对象将成为存储其中保存有关其他对象的信息的存储.但回到我的问题.我推了价值然后我想提醒它但是未定义...为什么未定义?

javascript

0
推荐指数
1
解决办法
774
查看次数