我正在努力学习WCF.我有一个简单的客户端和服务器应用程序设置,并在按下客户端上的按钮后,它从服务器获取更新的值.
我的下一步是尝试从服务器到客户端进行回调以更新其值.我已经倾注了许多例子,它们看起来太大而且令人困惑.有没有人可以在C#中提供我最简单的实现示例?
我一直在线查看示例,我只是不明白它需要什么?当然,我可以逐行复制示例,但这对我没有好处,因为如果我想在我自己的代码中执行此操作,我仍然没有实现.
有人可以帮我一个非常简单的例子,说明我需要采取什么步骤以及我需要在服务器代码中做什么,然后在客户端代码中才能实现这一点?
谢谢
我一直认为这DirectCast()是相当便宜,性能和内存方面的,并且它基本上是一种帮助我使用IntelliSense的方法,例如在事件处理程序中:
Public Sub myObject_EventHandler(sender As Object, e As System.EventArgs)
'Explicit casting with DirectCast
Dim myObject As myClass = DirectCast(sender, myClass)
myObject.MyProperty = "myValue"
End Sub
Run Code Online (Sandbox Code Playgroud)
我认为这对于我作为开发人员来说更好,但对于编译的代码和最终的性能也是如此,因为它启用了"早期绑定"而不是...
Public Sub myObject_EventHandler(sender As Object, e As System.EventArgs)
'No casting at all (late binding)
myObject.MyProperty = "myValue"
End Sub
Run Code Online (Sandbox Code Playgroud)
...如果我正确地得到了这些术语,它也可以编译和运行,但使用"后期绑定".即假设它sender实际上是一个myClass对象.
关于性能,延迟/早期绑定或其他任何事情,上面的第一个片段和下面的片段之间有什么区别:
Public Sub myObject_EventHandler(sender As Object, e As System.EventArgs)
'Implicit casting via variable declaration
Dim myObject As myClass = sender
myObject.MyProperty = "myValue"
End Sub
Run Code Online (Sandbox Code Playgroud)
显式DirectCast()调用是有用/有害还是在编译器优化代码后没有区别?
我试图修改SQL Server 2012数据库中的特定表中的特定列的数据类型.在脚本的开头,用户将设置列数据类型的新所需长度.但是,当我尝试更改表中的列以设置新varchar长度时,我收到错误.
以下是代码段和结果错误:
Declare @newPrecis int
Set @newPrecis = 23 -- New length of the index
Alter Table [dbo].[VTAB0047] Alter Column VAL varchar(@newPrecis)
Run Code Online (Sandbox Code Playgroud)
错误:
消息102,级别15,状态1,行5
'@ newPrecis'附近的语法不正确.
目前VAL列的长度是varchar(20),我希望它设置为23的长度或在set语句中输入的任何长度.
我现在忽略了任何类型的错误检查,因为我只是试图让基本功能失效.
我目前正在尝试记录一个Perl脚本,以准备将其转换为.NET.我之前没有Perl的经验,但是我设法通过很多Google-fu来完成它.我遇到了阻止我的一行代码,因为我不确定它的作用.我已经能够弄清楚它的大部分,但我错过了一块,我不知道它是否真的那么重要.这是代码行:
eval { if(defined $timeEnd && defined $timeStart){}; 1 } or next;
Run Code Online (Sandbox Code Playgroud)
我知道这defined是检查变量$timeEnd并$timeStart查看它们是否是null/ nothing/ undef.我也相信该eval块被用作Try/Catch块来捕获任何异常.代码行在foreach循环中,所以我相信next关键字将继续foreach循环的下一次迭代.
我解密困难的部分是{};1位.我的理解是它;是Perl中的一个语句分隔符,因为它没有用反斜杠转义,我不知道它在那里做了什么.我也不知道是什么{}意思.我认为它与数组有关,但它是一个空数组,我不知道它是否意味着一个特殊的东西直接在一个if()块之后.最后,我不知道一个整数的1意思是什么,并在eval块的末尾做什么.
如果有人可以将这行代码分解为单个部分及其定义,我将非常感激.
额外奖励:如果你能给我一个.NET转换,以及每个Perl位如何与它相关,我肯定会给你我的互联网尊重.以下是我现在将其转换为VB.NET的方法:
For each element in xmlList 'This isn't in the Perl code I posted, but it's the `foreach` loop that the code resides in.
Try
If Not IsNothing(timeEnd) AND Not IsNothing(timeStart) then
End …Run Code Online (Sandbox Code Playgroud) vb.net ×2
.net ×1
alter-table ×1
c# ×1
callback ×1
directcast ×1
performance ×1
perl ×1
sql ×1
sql-server ×1
t-sql ×1
varchar ×1
wcf ×1