小编Mar*_*ins的帖子

类型'System.Int32'的表达式不能用于返回类型'System.Object'

我正在尝试生成一个简单的脚本系统,用于打印标签.我在过去做过这个没有问题的反射,但我现在正在尝试使用Lambda函数,以便我可以缓存函数以便重用.

我到目前为止的代码如下......

public static string GetValue<T>(T source, string propertyPath) {

    try {

        Func<T, Object> func;

        Type type = typeof(T);
        ParameterExpression parameterExpression = Expression.Parameter(type, @"source");
        Expression expression = parameterExpression;
        foreach (string property in propertyPath.Split('.')) {
            PropertyInfo propertyInfo = type.GetProperty(property);
            expression = Expression.Property(expression, propertyInfo);
            type = propertyInfo.PropertyType;
        }

        func = Expression.Lambda<Func<T, Object>>(expression, parameterExpression).Compile();

        object value = func.Invoke(source);
        if (value == null)
            return string.Empty;
        return value.ToString();

    }
    catch {

        return propertyPath;

    }

}
Run Code Online (Sandbox Code Playgroud)

这似乎在某些情况下有效,但在其他情况下却失败了.问题似乎在于我试图将值作为对象返回 - 无论实际数据类型如何.我试图这样做是因为我不知道在编译时数据类型是什么,但从长远来看,我只需要一个字符串.

每当我尝试访问Int32类型的属性时,我都会收到此消息标题中显示的异常 - 但我也是为Nullable类型和其他类型获取它.当我尝试将表达式编译到函数中时抛出异常.

任何人都可以建议我在保持Lambda功能的同时以不同的方式解决这个问题,以便我可以缓存访问器吗?

.net c# lambda

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

在Windows 8上安装.net 2.0 SDK

有没有人成功在Windows 8 x64上安装.NET 2.0 SDK(x86x64)?

我以前在所有以前版本的Windows上安装它没有问题(我上次在几个月前在Windows 7 x64上安装了x86和x64版本)但我无法在Windows 8 x64上安装它.

我知道它现在已经过时了,但这是我知道安装.NET Framework配置加载项的唯一方法,虽然我知道CASPOL也是如此,但我仍然希望能够看到图形表示尝试计算自定义程序集权限,它仍然非常有用于生成程序集权限安装程序.

.net sdk failed-installation windows-8

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

使用Prism.Forms,哪个IoC容器更好

我是在一个新的开始Prism.Forms的项目,我想知道其中的各种的IoC 容器(Autofac,Dryloc,NinjectUnity)将是最好的与前进.

我不知道这是否属实,但我在某处读到Unity已不再处于积极开发状态,因为这MEF是我用过的唯一IoC 容器,我不确定它是否可行.

与此同时,我知道很少或根本不知道Autofac,Dryloc或者Ninject.

请客观地提出任何建议,说明为什么你觉得一个人比其他人好,而不仅仅是"我用xxx "; 我想做出明智的决定.

ioc-container inversion-of-control xamarin.forms prism-6

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

JQuery.Validate使用消息添加动态规则

我有一个表格,我正在使用jquery.validate.我最初使用一组规则和自定义消息调用validate ...

$("#formName").validate( {
  rules: {
    myExistingInput: {
      required: true
    }
  },
  messages: {
    myExistingInput: {
      required: "Enter something"
    }
  },
  ignore: null, // include hidden fields (see below)
  submitHandler: function(form) {
    // do stuff
  },
  invalidHandler: function(event, validator) {
    // do stuff (some of the fields may have been hidden by a collapsible panel
    // if there is an error on one of those fields, expand the panel so the error
    // becomes visible)
  }
});
Run Code Online (Sandbox Code Playgroud)

稍后,我动态地向表单添加字段,并为这些字段添加规则...

$("#formName").append(...);

$("#newInputName").rules("add", …
Run Code Online (Sandbox Code Playgroud)

jquery jquery-validate jquery-mobile

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

WinRT/Metro应用程序的本地数据库存储

我试图在WinRT中找到一个API,它允许我创建一个本地数据库,可用于存储偶尔连接的应用程序的数据.我正在寻找像SQL Compact Edition这样的东西.

我在各种电路板上看到了各种消息,表明存在这些消息

  • (a)不会是本地数据库
  • (b)没有本地"服务器"数据库(即SQL Express类型实例)
  • (c)名为"Jet Blue"的本地数据库代码.

有没有人对此有明确的答案?如果它被封锁,我不想开始这条路.

database local-storage microsoft-metro windows-runtime windows-store-apps

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

正则表达式从字符串中提取数字

有人可以帮我构建这个正则表达式吗...

鉴于以下字符串......

  • "四月(123个小部件少456个链轮)"
  • "五月(789个小部件减去012个链轮)"

我需要一个正则表达式,它将从文本中提取两个数字.月份名称会有所不同.括号,"小部件少"和"链轮"文本不会在字符串之间发生变化,但是如果这个文本也可以变化,那将非常有用.

提前致谢.

.net regex

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

asp.net 4.0 Web表单路由 - 默认/通配符路由

我有一个简单的方法,当使用ASP.NET 4.0路由与Web窗体生成一个将充当某种通配符的路由?

在我看来,在WebForms中,你必须为每个页面指定一个路由 - 我正在寻找某种通用路由,可以在没有特定需要的地方使用,也许直接从路径映射到路径所以......

http://somedomain.com/folder1/folder2/page可能会映射到folder1/folder2/page.aspx

有什么建议?

谢谢

asp.net routing wildcard-mapping asp.net-4.0

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

Prism/MVVM(MEF/WPF):从模块公开导航[例如菜单]

我开始第一次尝试使用MEF和WPF进入Prism v4/MVVM的世界.我成功构建了一个shell,使用MEF,我能够发现并初始化模块.但是,我不确定为这些模块公开的视图提供导航的正确方法.

例如,假设其中一个模块公开了三个视图,我想在菜单控件上显示这些视图的导航.到目前为止,我已经成功地暴露了一个基于a的视图,MenuItem并且它MenuItem包含子MenuItem控件,因此提供了可以使用的命令层次结构.大.

事情是,这感觉不对.我现在在我的模块中说明导航(因此shell)必须支持使用菜单.如果我想换到使用ToolBar,甚至一个Ribbon.然后我必须更改所有模块以显示shell的相应控件类型.

我环顾四周,有些网站提到使用"服务"来提供导航,在模块初始化期间,导航选项被添加到服务中,而服务又被shell用来显示导航格式就是了(ToolBar,TreeView,Ribbon,MenuItem等) -但我不能找到真正做任何的例子.

为了全面了解这一点,我最终希望能够从菜单和/或其他导航控件(可能是a Ribbon)中选择视图,然后在TabControl中按需打开这些视图.我已经得到了能够在TabControlat模块初始化时创建视图,现在我需要下一步.

我需要知道的是:以这样的方式公开导航选项的正确方法是什么,而不是坚持支持shell的特定控件,如果服务是方式,那么如何放置这一点在Prism/MVVM模式中.

提前感谢您提供的任何见解.

navigation wpf prism mef

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

Windows 8上的Visual Studio 2008/2010 - 问题?

我正在寻找可以提供有关在Windows 8(x64)上使用Visual Studio 2008和2010的问题的任何信息.我已经找到以下文章来识别W8上VS2010的已确认问题,但我找不到VS2008的任何类似文章.

具体来说,我使用VS2008进行移动开发,所以我不能简单地将项目升级到2010/2012(但是),但我也有一些Web应用程序项目,甚至可能还有一些控制台和/或Windows窗体项目.

我将希望将Visual Studio 2008,2010和2012彼此并排安装.

我知道明显的答案是尝试它,但我需要在升级我的生产PC之前有信心,因此希望听到其他用户可能遇到的任何问题(任何已经确定与他们一起去的解决方法)适当).

compatibility visual-studio-2010 visual-studio-2008 windows-8 visual-studio-2012

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

如何将其转换为异步任务?

鉴于以下代码......

static void DoSomething(int id) {
    Thread.Sleep(50);
    Console.WriteLine(@"DidSomething({0})", id);
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以将其转换为异步任务,如下所示......

static async Task DoSomethingAsync(int id) {
    await Task.Delay(50);
    Console.WriteLine(@"DidSomethingAsync({0})", id);
}
Run Code Online (Sandbox Code Playgroud)

通过这样做,如果我多次调用(Task.WhenAll),一切都会比使用Parallel.Foreach或甚至在循环内调用更快更高效.

但是有一分钟,让我们假装Task.Delay()不存在,我实际上必须使用Thread.Sleep(); 我知道实际情况并非如此,但这是概念代码,延迟/睡眠通常是一个IO操作,其中没有异步选项(例如早期EF).

我试过以下......

static async Task DoSomethingAsync2(int id) {
    await Task.Run(() => {
        Thread.Sleep(50);
        Console.WriteLine(@"DidSomethingAsync({0})", id);
    });
}
Run Code Online (Sandbox Code Playgroud)

但是,虽然它运行没有错误,但Lucien Wischik认为这实际上是不好的做法,因为它只是从池中启动线程来完成每项任务(使用以下控制台应用程序也会更慢 - 如果你在DoSomethingAsync和DoSomethingAsync2之间交换打电话你可以看到完成所需时间的显着差异)...

static void Main(string[] args) {
    MainAsync(args).Wait();
}

static async Task MainAsync(String[] args) {

    List<Task> tasks = new List<Task>();
    for (int i = 1; i <= 1000; i++)
        tasks.Add(DoSomethingAsync2(i)); // Can replace with any …
Run Code Online (Sandbox Code Playgroud)

.net c# async-await c#-5.0 .net-4.5

11
推荐指数
2
解决办法
4747
查看次数