在.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) 我有一个声明为的函数
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函数?
这是我的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:严重性是我导入的枚举.
如何确定对象是否是COM对象?我需要在Object类型的数组中的所有COM对象上调用Marshal.FinalReleaseComObject.
我可以强制窗口重新评估其所有绑定和验证吗?
出于某种原因,似乎在一个奇怪的情况下忽略了INotifyPropertyChanged.PropertyChanged,我正在寻找一种解决方法,直到找到真正的原因.
我正在寻找一个使用T-SQL存储过程腌制密码的示例.当然还有用于验证用户的匹配过程.
CREATE PROC ChangePassword(@Username nVarChar(50),@ Password nVarChar(50))
CREATE PROC ValidateUser(@Username nVarChar(50),@ Password nVarChar(50))
如何查询SQL Server中的系统停用词列表?我需要能够在不创建复制系统停止列表的新停止列表的情况下执行此操作.
现在我有一个带有一堆控件的普通窗口.
当用户点击某个按钮时,我想调暗整个窗口,然后在其上面显示一个弹出窗口.不是真正的对话框,只是窗口内的东西.
所以这是我的理论......
这可能吗?
有没有办法绑定到Nullable属性而不使用值转换器?
目前我有这个......
<DataGridTextColumn Header="ApplicationKey" Binding="{Binding ApplicationKey, ValidatesOnDataErrors=True, Converter={StaticResource ResourceKey=TestConverter}}" />
Run Code Online (Sandbox Code Playgroud)
如果没有转换器,它会将空文本框视为String.Empty而不是Null.
我希望有一些像TargetNullValue这样的神奇属性.
我正在用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代理是相同的.
谢谢你的任何信息.
wpf ×4
.net ×2
binding ×2
c# ×1
closures ×1
com ×1
datatrigger ×1
f# ×1
foreground ×1
generics ×1
lambda ×1
passwords ×1
reflection ×1
sql-server ×1
t-sql ×1
textblock ×1