我在IDataReader上有两个扩展方法,具有以下签名:
internal static List<T> GetList<T>(this IDataReader reader, Func<string, T> del)
internal static double? GetDoubleOrNull(this IDataReader reader, string columnName)
Run Code Online (Sandbox Code Playgroud)
GetDoubleOrNull 没有任何重载.
在其他地方,我能做到
Func<string, double?> del = reader.GetDoubleOrNull;
var x = reader.GetList(del);
Run Code Online (Sandbox Code Playgroud)
要么
var x = reader.GetList<double?>(reader.GetDoubleOrNull);
Run Code Online (Sandbox Code Playgroud)
或者只是传入一个类似的实例方法
public double? blah(string s)
var x = reader.GetList(blah);
Run Code Online (Sandbox Code Playgroud)
但我不能这样做
var x = reader.GetList(reader.GetDoubleOrNull);
Run Code Online (Sandbox Code Playgroud)
编译器给出错误
cannot convert from 'method group' to 'System.Func<string,double?>'
Run Code Online (Sandbox Code Playgroud)
我不明白这一点.我认为既然没有重载GetDoubleOrNull,就不会有重载决策,它可以从方法签名推断出类型参数.
真正令人困惑的部分是它在传入时的工作方式blah.
我对.Net和WPF很新,但有问题.代码是一个片段.我TextBox要输入日期.我使用GotFocus和LostFocus事件检查正确的输入.
<TextBox Name="sdDay" Width="40" Text="Day" GotFocus="DateDay_GotFocus" LostFocus="DateDay_LostFocus" Padding="5,5,5,5" HorizontalContentAlignment="Center" Focusable="True"/>
<TextBox Name="sdMonth" Width="50" Text="Month" GotFocus="DateMonth_GotFocus" LostFocus="DateMonth_LostFocus" Padding="5,5,5,5" Margin="5,0,0,0" HorizontalContentAlignment="Center" Focusable="True"/>
<TextBox Name="sdYear" Width="50" Text="Year" GotFocus="DateYear_GotFocus" LostFocus="DateYear_LostFocus" Padding="5,5,5,5" Margin="5,0,0,0" HorizontalContentAlignment="Center" Focusable="True"/>
Run Code Online (Sandbox Code Playgroud)
和代码:
private void DateDay_GotFocus(object sender, RoutedEventArgs e)
{
if (((TextBox)sender).Text == "Day")
((TextBox)sender).Text = string.Empty;
}
private void DateDay_LostFocus(object sender, RoutedEventArgs e)
{
if (((TextBox)sender).Text == string.Empty)
((TextBox)sender).Text = "Day";
else
CheckForCorrectDateDay((TextBox)sender);
}
private void CheckForCorrectDateDay(TextBox b)
{
int day = 0;
try
{ …Run Code Online (Sandbox Code Playgroud) 我正在玩WCF服务.
我遇到的问题是VS2010在启动VS Development Server时会随机为其分配一个新的端口号,即使我已通过项目设置将其设置为特定端口.
如果我继续停止并使用此问题启动VS Development Server几次,我会收到一条错误消息,指出无法启动ASP.NET Development服务器,因为端口'xxxx'正在使用中.
为什么会这样?
编辑:有人建议这可能是由于Dev Server没有停止.不幸的是,它也发生在刚刚启动的计算机上,即当它的任何实例都没有运行时.
此外,在收到错误消息后,如果更改端口或选择" 自动分配端口"选项并不重要.结果是一样的.
是否可以制作列出一堆自定义控件的列表框?我假设你可能不得不调用某种子对象的自定义绘图,但我不知道该怎么做.任何人都可以对此有所了解吗?
我有禁用和CSS风格的按钮.在Firefox中,禁用按钮在按下时根本不移动(这是预期的),在IE中,按钮中的文本仍然移动几个像素.
为什么会发生这种情况,更重要的是,如何在IE中实际禁用已禁用的样式按钮?