小编JRS*_*JRS的帖子

OK,APPLY,CANCEL按钮的顺序

这个问题的扩展:https: //stackoverflow.com/questions/50335/ok-cancel-or-cancel-ok

应用按钮应该去哪里(单击"应用"按钮与单击"确定"具有相同的效果,除了对话框保持打开状态)?

Windows通常使用OK-CANCEL-APPLY,但我倾向于使用OK-APPLY-CANCEL.

此外,如果单击"应用"按钮,是否应将"取消"按钮文本更改为"关闭",直到对话框中的其他更改为止?我假设如果没有要应用的更改,将禁用APPLY按钮.

usability user-interface

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

XMLWriter与XMLDictionaryWriter

XMLWriter和之间有什么区别XMLDictionaryWriter?在哪些情况下每个人都使用?

.net xmlwriter xml-serialization

16
推荐指数
2
解决办法
9258
查看次数

JIT编译器是否优化(内联)不必要的变量声明?

我已经阅读了几篇文章和问题/答案,总结出最佳实践是让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)

.net c# vb.net performance inline

8
推荐指数
2
解决办法
616
查看次数

使用JSON.NET与ExpandableObjectConverter的问题

我定义了以下类:

<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因为将枚举序列化为字符串表示更容易.

c# vb.net json typeconverter json.net

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

为什么接口没有强类型?

我有以下代码编译没有问题.当然,我在执行时遇到了无效的强制转换异常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)

vb.net interface strong-typing

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

如何在Windows上检测OpenGL的硬件加速

是否有Win32 API调用来检测用户系统的当前硬件加速级别?我不需要更改设置,但是如果禁用了硬件加速,我想缩小OpenGL显示的细节级别。

hardware opengl acceleration

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

.NET扩展事件

我想为一些内置的.NET类添加事件.例如,我想将以下事件添加到泛型List(T):

  • ItemAdded
  • ItemRemoved
  • 引发ListChanged
  • 等等

我可以想到几种方法来实现这一目标,但我不确定哪种方法最好.

  1. 我可以使用" 扩展事件 ",也就是说,如果有这样的事情或方法来使用扩展方法来模拟类似事件的功能.
  2. 我可以继承List(T)覆盖必要的方法和属性.
  3. 我可以继承List(T)遮蔽必要的方法和属性.
  4. 我可以创建一个实现一个新的类IList(T),然后包装其余的功能List(T)IList(T)缺失.

显然,选项4是最多的工作,如果我只想扩展一个类,这不是什么大问题.但是,我也想避免讨厌的副作用.

每种方法有哪些优点,缺点和注意事项?

注意:我并不特别关注IList(T).我发现自己也希望将"扩展事件"添加到其他类中.

.net events extension-methods

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

反序列化后无法使用的事件

问题:

我有一个使用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事件!

问题:

我知道反序列化过程会绕过类构造函数,但是不应该初始化事件吗?

难道我做错了什么?

是否可以序列化/反序列化事件? …

.net vb.net events datacontractserializer

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