我是VB.Net的人.(因为我必须这样做,因为签署我的支票的人是这样说的.:P)我在Java中长大,当我有机会时,我通常不会在C#中阅读或写作.我今天遇到了一些我从未见过的语法,而且我似乎无法弄明白.
在以下方法声明中,<T>表示什么?
static void Foo <T>(params T [] x)
我已经看到与声明泛型集合和事物一起使用,但我不能为我的生活弄清楚它对这个方法的作用.
如果它很重要,我在考虑一些C#脑筋急转弯时遇到过它.第六个预告片包含整个代码段.
我能够在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,后跟蓝色矩形,后跟红色矩形.
它是否违反了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)
此示例中存在隐藏在不同模型后面的"规则".
对此有一个强烈的批评:我无法进行POST来创建一个新的,更改名称字段,并将其返回到更新它.我必须知道删除Id和链接字段.我可以"接受我接受的自由"并允许Ids和链接在PUT请求上,但是我需要做出额外的决定,例如,"如果它们发送的Id/Link不同,它是400吗?" "如果他们不发送ID /链接,它是400吗?"如果API声称在PUT上接受这些字段,那么可以将其视为可以更新的合同.
c# ×1
declaration ×1
itemscontrol ×1
itemtemplate ×1
methods ×1
rest ×1
silverlight ×1
web-services ×1
wpf ×1