小编Arj*_*Arj的帖子

WCF服务+ SvcUtil生成意外的对象结构

我正在尝试创建一个WCF应用程序,它将侦听来自供应商系统的请求.供应商为我提供了WSDL,因此我需要创建一个服务并将其"端点"暴露给他们.

我已经使用SvcUtil.exe生成C#类,但它输出了相当奇怪的类型.

这是给我的WSDL的片段:

<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <wsdl:types>
    <s:schema elementFormDefault="qualified">
      <s:element name="Submit">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="Incident">
              <s:complexType>
                <s:sequence>
                  <s:element minOccurs="0" maxOccurs="1" form="unqualified" name="TransactionId" type="s:string" />
                  <s:element minOccurs="0" maxOccurs="1" form="unqualified" name="TransactionType" type="s:string" />
                  <s:element minOccurs="0" maxOccurs="1" form="unqualified" name="TransactionSubType" type="s:string" />
                  <s:element minOccurs="0" maxOccurs="unbounded" form="unqualified" name="ConfigurationItem">
                    <s:complexType>
                      <s:sequence>
                        <s:element minOccurs="0" maxOccurs="1" form="unqualified" name="AssetTag" type="s:string" />
                        <s:element minOccurs="0" maxOccurs="1" form="unqualified" name="Name" type="s:string" />
                    ....
Run Code Online (Sandbox Code Playgroud)

我运行的命令很简单

svcutil.exe file_name.wsdl
Run Code Online (Sandbox Code Playgroud)

我希望这会创建一个这样的结构:

class Submit { ... } …
Run Code Online (Sandbox Code Playgroud)

c# wcf soap wsdl svcutil.exe

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

HtmlGenericControl("a")与HtmlAnchor

我正在调查为什么我的一个应用程序运行得很慢.应用程序生成并显示网格,并使用工作任务填充它(呈现为表格单元格).在每个任务中都有一个<a href="...可以提供有关任务的更多信息.

因为这都是从代码隐藏中动态构建的,所以我习惯于HTMLTableRows/Cells创建行和单元格,然后使用Controls属性进行添加HTMLAnchors.每当我设置的属性我用HTMLAnchor.HRef,HTMLTableCell.ColSpan等等.

我注意到如果我使用泛型HTMLGenericControl然后使用它的Attributes集合,例如

HTMLGenericControl a = new HTMLGenericControl("a");
a.Attributes["href"] = task.getLink();
Run Code Online (Sandbox Code Playgroud)

它的运行速度明显快于我认为是做同样事情的首选方式:

HtmlAnchor a = new HTMLAnchor;
a.HRef = task.getLink();
Run Code Online (Sandbox Code Playgroud)

有没有人对这个明显的额外"开销"来自哪里有任何解释?

编辑

如果有人对我的解释感到困惑,我发布了同一项目的另一个问题,该问题有截图.

html c# asp.net performance

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

使用 Jolt 从第一个数组元素中提取值

我有以下 JSON 文档:

{
    "pbid": 123,
    "pid": 0,
    "time": 1483551745000,
    "timestamp": "2017-01-04 17:42:25",
    "creationTime": 1483551789000,
    "creationTimestamp": "2017-01-04 17:43:09",
    "name": "myname",
    "triggeredComponents": [
        {
            "device": {
                "did": 20,
                "ip": "127.0.0.1",
                "firstSeen": 1427474095000,
                "lastSeen": 1483545006000,
                "typename": "dnsserver"
            },
            "time": 1483551789000
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

使用 Jolt 我需要将其转换为以下内容:

{
  "event_id" : 123,                ( pbid )
  "name" : "myname",               ( name )
  "did": "20",                     ( triggeredComponents[0].device.did )
  "first_seen": 1427474095000,     ( triggeredComponents[0].device.firstSeen )
  "last_seen": 1483545006000       ( triggeredComponents[0].device.lastSeen )
}
Run Code Online (Sandbox Code Playgroud)

我对基本的转变(event_idname)没问题,但我不知道如何从数组中提取。这是我目前的尝试(我也尝试过其他一些方法):

[
  { …
Run Code Online (Sandbox Code Playgroud)

json jolt

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

C# - 返回通用数组类型

如果我有一个简单的Utility函数将数组复制到一个新数组:

public static object[] CopyTo(object[] original, int startIndex, int endIndex)
{
    List<object> copied - new List<object>();
    for (int i = startIndex; i <= endIndex; i++) 
    {
        copied.Add(original[i]);
    }
    return copied.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

然后我希望能够像这样调用它:

int[] newThing = CopyTo(new int[] { 10, 9, 8, 7, 6 }, 2, 4);
Run Code Online (Sandbox Code Playgroud)

编译错误说cannot convert from int[] to object[].这是预期的,因为我的CopyTo函数特别想要一个对象数组,而不是一个整数数组.

如何更改CopyTo的声明以使其动态接受并返回任何类型的数组? 我相信泛型是这样的(尽管我对此并不太熟悉)所以我尝试过:

public static T[] CopyTo(T[] original, int startIndex......)
Run Code Online (Sandbox Code Playgroud)

但编译器不会将T识别为类型.

c# arrays generics types generic-programming

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

循环声明中的方法执行

我正在查看我正在开发的网站的性能,我遇到了一些我写的代码:

 foreach (WorkItem wi in p.getWorkItems(dateFrom, dateTo))
 {
     someFunction(wi);
 }
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,p.getWorkItems每次循环执行时该方法都会运行吗?或者它执行一次,将结果对象保存在内存中,只是将指针递增到它正在使用的对象?原因是getWorkItems在幕后做了大量的事情(比较,排序,其他查询),所以最好不要一遍又一遍地执行.如果是这样,那么我最好这样做,如下所示:

 List<WorkItem> workload = p.getWorkItems(dateFrom, dateTo);

 for (int i = 0; i < workload.Count; i++)
 {
     someFunction(workload[i]);
 }
Run Code Online (Sandbox Code Playgroud)

它是用C#编写的,但我假设答案适用于大多数类似的语言.

c# optimization performance loops

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