小编Dre*_*rew的帖子

在C#中,什么是<T>方法声明后?

我是VB.Net的人.(因为我必须这样做,因为签署我的支票的人是这样说的.:P)我在Java中长大,当我有机会时,我通常不会在C#中阅读或写作.我今天遇到了一些我从未见过的语法,而且我似乎无法弄明白.

在以下方法声明中,<T>表示什么?

static void Foo <T>(params T [] x)

我已经看到与声明泛型集合和事物一起使用,但我不能为我的生活弄清楚它对这个方法的作用.

如果它很重要,我在考虑一些C#脑筋急转弯时遇到过它.第六个预告片包含整个代码段.

c# methods declaration

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

为什么ItemsControl不使用我的ItemTemplate?

我能够在ItemsControl中使用ItemTemplate以特定格式呈现项目.但是,如果ItemsControl中的一个项恰好是TextBox,则呈现TextBox而不是ItemsTemplate的实例.据我所知,任何FrameworkElement都是如此.这是ItemsControl的预期行为,还是我做错了什么?

一个例子:

<ItemsControl>
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <Grid Margin="5">
        <Rectangle Fill="Blue" Height="20" Width="20" />
      </Grid>
    </DataTemplate>
  </ItemsControl.ItemTemplate>
  <ItemsControl.Items>
    <sys:Object />
    <TextBox />
    <sys:Object />
    <Rectangle Fill="Red" Height="20" Width="20" />
  </ItemsControl.Items>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)

我希望这能显示四个蓝色矩形.我认为只要定义了ItemTemplate,集合中的每个项目都会呈现为模板的一个实例.但是,在这种情况下,将呈现以下内容:蓝色矩形后跟TextBox,后跟蓝色矩形,后跟红色矩形.

silverlight wpf itemtemplate itemscontrol

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

RESTful GET和POST的不同模型

它是否违反了REST的概念或接受的约定,在同一个URL上有不同的GET/PUT/POST模型?

一个例子:

考虑在api/things上找到的简单资源

我可以创建一个东西:

POST api/things 
with body = { Name: "New Thing" }
Run Code Online (Sandbox Code Playgroud)

这让我和位置一起回归

{ Id: 500, Name: "New Thing", Links: ["api/things/500"] }
Location Header: api/things/500
Run Code Online (Sandbox Code Playgroud)

我可以得到的东西:

GET api/things/500
Run Code Online (Sandbox Code Playgroud)

我会的

{ Id: 500, Name: "New Thing", Links: ["api/things/500"] }
Run Code Online (Sandbox Code Playgroud)

如果我想更新它:PUT api/things/500

{ Name: "Updated Thing", IsActive: false }
Run Code Online (Sandbox Code Playgroud)

此示例中存在隐藏在不同模型后面的"规则".

  1. 创建时,您无法指定Id或IsActive设置.由服务器生成的Id始终作为活动启动.
  2. 您无法更新Id,因此无法更新使用它的"链接",因此PUT模型不包含Id字段.

对此有一个强烈的批评:我无法进行POST来创建一个新的,更改名称字段,并将其返回到更新它.我必须知道删除Id和链接字段.我可以"接受我接受的自由"并允许Ids和链接在PUT请求上,但是我需要做出额外的决定,例如,"如果它们发送的Id/Link不同,它是400吗?" "如果他们不发送ID /链接,它是400吗?"如果API声称在PUT上接受这些字段,那么可以将其视为可以更新的合同.

rest web-services asp.net-web-api asp.net-web-api2

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