这个问题的扩展:https: //stackoverflow.com/questions/50335/ok-cancel-or-cancel-ok
应用按钮应该去哪里(单击"应用"按钮与单击"确定"具有相同的效果,除了对话框保持打开状态)?
Windows通常使用OK-CANCEL-APPLY,但我倾向于使用OK-APPLY-CANCEL.
此外,如果单击"应用"按钮,是否应将"取消"按钮文本更改为"关闭",直到对话框中的其他更改为止?我假设如果没有要应用的更改,将禁用APPLY按钮.
XMLWriter和之间有什么区别XMLDictionaryWriter?在哪些情况下每个人都使用?
我已经阅读了几篇文章和问题/答案,总结出最佳实践是让JIT编译器对内联函数调用进行所有优化.说得通.
内联变量声明怎么样?编译器是否也优化了这些?
就是这样:
Dim h = (a + b + c) / 2 'Half-Perimeter
If maxEdgeLength / (Math.Sqrt(h * (h - a) * (h - b) * (h - c)) / h) <= MaximumTriangleAspectRatio Then
'Do stuff here.
End If
Run Code Online (Sandbox Code Playgroud)
有比这更好的表现:
Dim perimeter = a + b + c 'Perimeter
Dim h = perimeter / 2 'Half-Perimeter
Dim area = Math.Sqrt(h * (h - a) * (h - b) * (h - c)) 'Heron's forumula.
Dim inradius = area / …Run Code Online (Sandbox Code Playgroud) 我定义了以下类:
<TypeConverter(GetType(ExpandableObjectConverter))>
<DataContract()>
Public Class Vector3
<DataMember()> Public Property X As Double
<DataMember()> Public Property Y As Double
<DataMember()> Public Property Z As Double
Public Overrides Function ToString() As String
Return String.Format("({0}, {1}, {2})",
Format(X, "0.00"),
Format(Y, "0.00"),
Format(Z, "0.00"))
End Function
End Class
Run Code Online (Sandbox Code Playgroud)
使用DataContractJsonSerializer我按预期收到以下JSON:
{
"Vector": {
"X": 1.23,
"Y": 4.56,
"Z": 7.89
}
}
Run Code Online (Sandbox Code Playgroud)
但是,JSON.NET产生:
{
"Vector": "(1.23, 4.56, 7.89)"
}
Run Code Online (Sandbox Code Playgroud)
如果我ExpandableObjectConverter从类中删除该属性,JSON.NET会按预期生成结果(与DataContractJsonSerializer相同).
不幸的是,我需要ExpandableObjectConverter这样,以便该类使用属性网格.
有没有办法告诉JSON.NET忽略ExpandableObjectConverters?
我更喜欢使用JSON.NET,而不是DataContractJsonSerializer因为将枚举序列化为字符串表示更容易.
我有以下代码编译没有问题.当然,我在执行时遇到了无效的强制转换异常Dim C As IDoThingsC = GetThing_C().我错过了什么吗?您是否希望返回不符合函数返回值的接口要求的对象?
Public Class ClassA
Public Sub DoThings_A()
Debug.Print("Doing A things...")
End Sub
End Class
Public Class ClassB
Implements IDoThingsC
Public Sub DoThings_B()
Debug.Print("Doing B things...")
End Sub
Public Sub DoThings_C() Implements IDoThingsC.DoThings_C
Debug.Print("Doing C things...")
End Sub
End Class
Public Interface IDoThingsC
Sub DoThings_C()
End Interface
Public Class aTest
Public Sub Test()
Dim C As IDoThingsC = GetThing_C()
C.DoThings_C()
End Sub
Public Function GetThing_C() As IDoThingsC
Dim Thing As ClassA = New ClassA …Run Code Online (Sandbox Code Playgroud) 是否有Win32 API调用来检测用户系统的当前硬件加速级别?我不需要更改设置,但是如果禁用了硬件加速,我想缩小OpenGL显示的细节级别。
我想为一些内置的.NET类添加事件.例如,我想将以下事件添加到泛型List(T):
我可以想到几种方法来实现这一目标,但我不确定哪种方法最好.
List(T)并覆盖必要的方法和属性.List(T)并遮蔽必要的方法和属性.IList(T),然后包装其余的功能List(T)是IList(T)缺失.显然,选项4是最多的工作,如果我只想扩展一个类,这不是什么大问题.但是,我也想避免讨厌的副作用.
每种方法有哪些优点,缺点和注意事项?
注意:我并不特别关注IList(T).我发现自己也希望将"扩展事件"添加到其他类中.
问题:
我有一个使用DataContractSerialization的Child类,并在设置Name属性时引发Changed事件.
<DataContract()>
Public Class Child
Public Event Changed()
<DataMember()>
Private _Name As String
Public Sub New(ByVal NewName As String)
_Name = NewName
End Sub
Public Property Name() As String
Get
Return _Name
End Get
Set(ByVal value As String)
_Name = value
RaiseEvent Changed()
End Set
End Property
End Class
Run Code Online (Sandbox Code Playgroud)
它包含在Parent类中,该类也使用DataContractSerialization并处理Child的Changed事件.
<DataContract()>
Public Class Parent
<DataMember()>
Private WithEvents Child As Child
Private Sub Child_Changed() Handles Child.Changed
'Handle changed event here...
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
Parent类被序列化和反序列化,所有数据(包括Child)都按预期保存和恢复.
但是,在反序列化之后,永远不会引发Changed事件!
问题:
我知道反序列化过程会绕过类构造函数,但是不应该初始化事件吗?
难道我做错了什么?
是否可以序列化/反序列化事件? …