小编Jon*_*len的帖子

从.NET中的字符串获取Type对象的最佳方法

在.NET中将字符串转换为Type对象的最佳方法是什么?

需要考虑的问题:

  • 类型可以在不同的组件中.
  • 类型的程序集可能尚未加载.

这是我的尝试,但它没有解决第二个问题

Public Function FindType(ByVal name As String) As Type
    Dim base As Type

    base = Reflection.Assembly.GetEntryAssembly.GetType(name, False, True)
    If base IsNot Nothing Then Return base

    base = Reflection.Assembly.GetExecutingAssembly.GetType(name, False, True)
    If base IsNot Nothing Then Return base

    For Each assembly As Reflection.Assembly In _
      AppDomain.CurrentDomain.GetAssemblies
        base = assembly.GetType(name, False, True)
        If base IsNot Nothing Then Return base
    Next
    Return Nothing
End Function
Run Code Online (Sandbox Code Playgroud)

.net reflection system.reflection

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

如何将"字符串"转换为"option <string>"

我有一个声明为的函数

let GetLength (value : option<string>) = 
    if value.IsSome then value.Value.Length else 0
Run Code Online (Sandbox Code Playgroud)

我有变量

let a : string = "tom"
Run Code Online (Sandbox Code Playgroud)

如何将a传递给GetLength函数?

f#

7
推荐指数
3
解决办法
2844
查看次数

WPF:如何使用DataTrigger设置TextBlock的Foreground属性

这是我的XAML:

<TextBlock Name="SeverityText"
           Grid.Column="1"
           Grid.Row="0"
           Foreground="Red">
    <TextBlock.Triggers>

        <DataTrigger Binding="{Binding Path=Severity}">
            <DataTrigger.Value>
                <sm:Severity>Warning</sm:Severity>
            </DataTrigger.Value>
            <Setter TargetName="SeverityText"
                    Property="Foreground"
                    Value="Yellow" />
        </DataTrigger>
                 <DataTrigger Binding="{Binding Path=Severity}">
            <DataTrigger.Value>
                <sm:Severity>Information</sm:Severity>
            </DataTrigger.Value>
            <Setter TargetName="SeverityText"
                    Property="Foreground"
                    Value="White" />
        </DataTrigger>


    </TextBlock.Triggers>
    <TextBlock>Severity:</TextBlock>
    <TextBlock Text="{Binding Path=Severity}" />
</TextBlock>
Run Code Online (Sandbox Code Playgroud)

这是我的错误消息:

在"ContentPresenter"类型上找不到静态成员"ForegroundProperty".

sm:严重性是我导入的枚举.

wpf datatrigger textblock foreground

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

.NET:如何确定对象是否是COM对象?

如何确定对象是否是COM对象?我需要在Object类型的数组中的所有COM对象上调用Marshal.FinalReleaseComObject.

.net com

7
推荐指数
2
解决办法
138
查看次数

WPF:我可以强制窗口重新评估其所有绑定和验证吗?

我可以强制窗口重新评估其所有绑定和验证吗?

出于某种原因,似乎在一个奇怪的情况下忽略了INotifyPropertyChanged.PropertyChanged,我正在寻找一种解决方法,直到找到真正的原因.

wpf binding

7
推荐指数
2
解决办法
4000
查看次数

T-SQL:盐渍密码

我正在寻找一个使用T-SQL存储过程腌制密码的示例.当然还有用于验证用户的匹配过程.

CREATE PROC ChangePassword(@Username nVarChar(50),@ Password nVarChar(50))

CREATE PROC ValidateUser(@Username nVarChar(50),@ Password nVarChar(50))

t-sql passwords

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

查询系统停止SQL Server中的单词

如何查询SQL Server中的系统停用词列表?我需要能够在不创建复制系统停止列表的新停止列表的情况下执行此操作.

sql-server full-text-search

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

如何在窗口上叠加控件?

现在我有一个带有一堆控件的普通窗口.

当用户点击某个按钮时,我想调暗整个窗口,然后在其上面显示一个弹出窗口.不是真正的对话框,只是窗口内的东西.

所以这是我的理论......

  1. 每个控件都在第0层.
  2. 有一个与第1层中的表单大小相同的矩形.这具有50%的透明度.
  3. 我的弹出窗口加载到第2层.
  4. 单击矩形上的任意位置将与在弹出窗口上按住close键相同.

这可能吗?

wpf

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

WPF:有没有办法绑定到Nullable <Int32>属性而不使用值转换器?

有没有办法绑定到Nullable属性而不使用值转换器?

目前我有这个......

<DataGridTextColumn Header="ApplicationKey" Binding="{Binding ApplicationKey, ValidatesOnDataErrors=True, Converter={StaticResource ResourceKey=TestConverter}}" />
Run Code Online (Sandbox Code Playgroud)

如果没有转换器,它会将空文本框视为String.Empty而不是Null.

我希望有一些像TargetNullValue这样的神奇属性.

wpf binding

6
推荐指数
2
解决办法
2983
查看次数

为什么转换为泛型类型比C#中的显式转换慢?

我正在用C#构建一个消息调度图,主要是用一些不同的方法来玩.我很好奇我正在测量的性能差异,但是从IL看起来并不明显.

消息地图:

delegate void MessageHandler(Message message);
AddHandler(Type t, MessageHandler handler) 
{ 
    /* add 'handler' to messageMap invocation list */ 
}

delegate void GenericMessageHandler<T>(T message);
AddHandler<T>(GenericMessageHandler<T> handler) where T: Message
{
    AddHandler(typeof(T), e => { handler((T)e); });
}

Dictionary<Type, MessageHandler> messageMap;
Run Code Online (Sandbox Code Playgroud)

然后我有一个Messages类的层次结构,类似于WPF中的EventArgs,例如:

public class Message {}
public class VelocityUpdateMessage : Message
Run Code Online (Sandbox Code Playgroud)

和具有处理函数的observer类:

void HandleVelocityUpdate(VelocityUpdateMessage message) { ... }
Run Code Online (Sandbox Code Playgroud)

我正在测量2种添加和调用处理程序的方法.我正在包装委托调用,所以我可以获得一些概念类型的安全性,其中存在性能差异.

方法1:听众呼叫

AddHandler(typeof(VelocityUpdateMessage), 
           e => { HandleVelocityUpdate((VelocityUpdateMessage)e); });
Run Code Online (Sandbox Code Playgroud)

方法2:听众呼叫

AddHandler<VelocityUpdateMessage>(HandleVelocityUpdate);
Run Code Online (Sandbox Code Playgroud)

这两种方法都构建了一个MessageHandler委托,它可以进行强制转换和相同的方法调用,但是调用使用方法#2构建的委托,即使生成的IL看起来相同,也会慢一点.是否会在转换为泛型类型时产生额外的运行时开销?是类型约束吗?一旦解决了泛型类型,我希望JITted代理是相同的.

谢谢你的任何信息.

c# generics lambda closures anonymous-delegates

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