小编Dan*_*rth的帖子

为什么我需要为Xpath查询指定命名空间管理器

在查询XmlDocument时,我需要在每次调用时传递命名空间管理器.真烦人,但这只是我们生活的东西.真正讨厌的一点是首先创建命名空间管理器.

XmlNamespaceManager nsMan = new XmlNamespaceManager(invoiceTextReader.NameTable);
nsMan.AddNamespace("", "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2");
nsMan.AddNamespace("pb", "urn:pierbridge:names:specification:pbl:schema:xsd:tpn-1");
...
Run Code Online (Sandbox Code Playgroud)

要创建它,我不仅要使用nametable为实例设定种子,还要手动指定每个命名空间.这对我来说似乎很愚蠢.如果我必须手动添加它们,那么传递名称表的重点是什么.如果我需要为每个查询传递命名空间管理器,那么传递名称表的重点是什么.为什么它不能直接从文档中包含的内容构建命名空间管理器.看起来只是为了运行一个查询而烦恼不已.

c# xml

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

将VBS代码转换为C#

我在http://www.hmailserver.com/documentation/latest/?page=com_example_account_create下面提供了以下代码作为hMailServer的DCOM API提供的代码以下脚本正常工作.它没有任何参考.在安装hMailServer之后,运行以下代码可以创建一个帐户.现在,我在C#中需要相同的东西.他们没有为我提供任何C#我用Google搜索的库,但我没有相关的结果是下面的代码,但根据hMailServer API,他们说你可以将下面的脚本转换成你想要的任何语言.但是怎么样?我甚至不知道如何开始写第一行.有人请帮帮我.

Dim obApp
   Set obApp = CreateObject("hMailServer.Application")

   ' Authenticate. Without doing this, we won't have permission
   ' to change any server settings or add any objects to the
   ' installation.   
   Call obApp.Authenticate("Administrator", "your-main-hmailserver-password")

   ' Locate the domain we want to add the account to
   Dim obDomain
   Set obDomain = obApp.Domains.ItemByName("example.com")

   Dim obAccount
   Set obAccount = obDomain.Accounts.Add

   ' Set the account properties
   obAccount.Address = "account@example.com"
   obAccount.Password = "secret"
   obAccount.Active = True
   obAccount.MaxSize = 100 ' Allow max …
Run Code Online (Sandbox Code Playgroud)

c# com vbscript

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

如何获取(逻辑)桌面上的项目总数(C#)

让我详细说明一下."items"我指的是你在桌面上看到的所有项目(Windows),其中包括"我的电脑","回收站",所有快捷方式等.如果我选​​择桌面上的所有项目,我会在属性中获得计数显示.这是我想要的,以编程方式.

我面临的问题:

我们看到的桌面包含我帐户中All Users的项目,还有桌面项目以及"我的电脑","回收站"等其他快捷方式.总共有3件事.所以我不能只从物理路径到Desktop目录获取项目数.所以这失败了:

int count =
    Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder
                                                            .DesktopDirectory)
                      ).Length;
Run Code Online (Sandbox Code Playgroud)

据我所知SpecialFolder.Desktop,我知道代表逻辑桌面.但是再次失败,因为GetFolderPath()再次获得用户桌面的物理路径:

int count = 
    Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder
                                                            .Desktop)
                      ).Length;
Run Code Online (Sandbox Code Playgroud)

在用户的桌面上获得总计数的正确方法是什么?

c# windows desktop special-folders c#-2.0

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

避免在双链接方案中指定键列

假设我有以下两个类:

public class User : Entity
{
    public virtual IList<Item> Items { get; set; }
}

public class Item : Entity
{
    public virtual User Owner { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我创建了两个映射类:

public class UserMap : ClassMap<User>
{
    public UserMap()
    {
        Id(x => x.Id);
        HasMany(x => x.Items);
    }
}

public class ItemMap : ClassMap<Item>
{
    public ItemMap()
    {
        Id(x => x.Id);
        References(x => x.Owner);
    }
}
Run Code Online (Sandbox Code Playgroud)

这将导致Item具有列UserId和列的表OwnerId.当我KeyColumn("OwnerId")HasMany映射上使用时,它只适用于OwnerId列,但我想避免这种情况.有没有办法告诉NHibernate,使用映射创建的列ItemMap …

.net c# nhibernate fluent-nhibernate

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

链接相互依赖的规则

我在我的项目中使用Fluent验证.
在我的ViewModel中,我有一个string类型的属性,有效值只是表示正整数的字符串.
因此,我创建了一个简单IntegerValidator的函数来检查字符串是否可以解析为整数.这有效.
问题是,如何添加规则,它必须是一个正整数?我想使用现有的Greater Than Validator,但将其链接到我的字符串属性的规则会将其比较为a string,而不是解析int.怎么做到这一点?

我想做的样本(注意ToInt()):

RuleFor(x => x.BatchNumber).SetValidator(new IntegerValidator())
                           .ToInt().GreaterThan(0);
Run Code Online (Sandbox Code Playgroud)

.net c# fluentvalidation

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

具有依赖注入的MVVM ViewModels中的陈旧数据

在我的WPF应用程序中,我使用MVVM模式和依赖注入.

从数据库准备数据的ViewModel获取注入构造函数的存储库.它们还使用构造函数中的存储库中的数据填充属性.

ViewModel都是在ViewModelLocator类的静态构造函数中创建的,所有View都使用它来绑定到它们的ViewModel.

这有以下缺点:

  1. 视图中的数据永远不会更新,即使在关闭和重新打开它们时也是如此,因为ViewModel实例始终是相同的.
  2. 打开第一个视图后,将实例化所有ViewModel,并从数据库中加载它们所需的数据.

我可以想出两种解决这些问题的方法:

  1. 使每个ViewModel实现一个从数据库读取数据并初始化属性的方法 - 而不是在构造函数中这样做.这将需要在每次打开视图时调用该方法.这引入了我不喜欢的时间耦合.
  2. 以这样的方式实现ViewModelLocator,即每次调用ViewModelLocator上的相应属性时,它都会创建所请求的ViewModel.我不喜欢这种方法,因为我的组合根不会在程序启动时执行,而是会在程序实例的整个生命周期内传播.

有没有其他方法可以解决这个问题?别人怎么解决这个问题?

.net c# wpf dependency-injection mvvm

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

甚至跨浏览器一一执行测试

我正在用testcafe针对不支持并发的测试后端编写E2E测试,即,如果两个测试并行执行,则测试后端会崩溃。

当我仅针对一个浏览器进行测试时,测试将按顺序执行。但是,当我指定多个浏览器时,测试将按浏览器顺序运行,但是测试会同时在每个浏览器中启动。

我希望testcafe首先在一个浏览器中执行所有测试,然后打开下一个浏览器并在其中执行所有测试,依此类推。

这可能吗?

javascript testing automated-tests typescript testcafe

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

发生字符串后删除文本

我有一个字符串,具有以下格式:

string sample = "A, ABC, 1, ACS,,"
Run Code Online (Sandbox Code Playgroud)

如您所见,该,角色有5个出现.我需要在第4次发生后删除所有内容,以便最终结果为:

string result = fx(sample, 4);
"A, ABC, 1, ACS"
Run Code Online (Sandbox Code Playgroud)

没有一个可能foreach吗?提前致谢.

c# regex linq string

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

如何显示如果绑定数据源是List Collection,则在GridView中找不到记录


我有一个gridview,其中dtasource binded是一个返回类类型的List.如果列表中没有记录,我想在GridView中显示"找不到记录".

List<Ticket> ticketList = new List<Ticket>();
ticketList = _tktBusiness.ReadAll(_tkt);
if (ticketList.Count > 0)
{
    gridTicketList.DataSource = ticketList;
    gridTicketList.DataBind();
}
else
{
}
Run Code Online (Sandbox Code Playgroud)

在其他方面,我需要写什么代码来获得所需的输出?有人可以帮忙吗?

asp.net

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

在c#中显示电子邮件正文中的数据表

我试图在电子邮件正文中显示数据表.我正在使用下面的函数转换html标签中的数据表

private static string getHTML(DataTable dt)

    {
        StringBuilder myBuilder = new StringBuilder();

        myBuilder.Append("<table border='1px' cellpadding='5' cellspacing='0' ");
        myBuilder.Append("style='border: solid 1px Silver; font-size: x-small;'>");

        myBuilder.Append("<tr align='left' valign='top'>");
        foreach (DataColumn myColumn in dt.Columns)
        {
            myBuilder.Append("<td align='left' valign='top'>");
            myBuilder.Append(myColumn.ColumnName);
            myBuilder.Append("</td>");
        }
        myBuilder.Append("</tr>");

        foreach (DataRow myRow in dt.Rows)
        {
            myBuilder.Append("<tr align='left' valign='top'>");
            foreach (DataColumn myColumn in dt.Columns)
            {
                myBuilder.Append("<td align='left' valign='top'>");
                myBuilder.Append(myRow[myColumn.ColumnName].ToString());
                myBuilder.Append("</td>");
            }
            myBuilder.Append("</tr>");
        }
        myBuilder.Append("</table>");

        return myBuilder.ToString();
    }
Run Code Online (Sandbox Code Playgroud)

并将返回的字符串提供给stringbuilder,如下所示

StringBuilder sb = new StringBuilder(); 
                sb.AppendLine("Dear Responsible,"); 
                sb.AppendLine(""); 
                sb.AppendLine("Following items are added."); 
                sb.AppendLine(""); …
Run Code Online (Sandbox Code Playgroud)

c#

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