小编Did*_*xis的帖子

从PropertyInfo创建表达式

我正在使用一个期望的API Expression<Func<T, object>>,并使用它来创建不同对象之间的映射:

Map(x => x.Id).To("Id__c"); // The expression is "x => x.Id"
Run Code Online (Sandbox Code Playgroud)

如何从PropertyInfo?创建必要的表达式?这个想法是:

var properties = typeof(T).GetProperties();

foreach (var propInfo in properties)
{
    var exp = // How to create expression "x => x.Id" ???

    Map(exp).To(name);
}
Run Code Online (Sandbox Code Playgroud)

.net c# reflection expression-trees

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

我可以将匿名对象传递给期望类型为object的引用参数的方法吗?

我想知道为什么第一次呼叫Bar(ref object)不起作用而第二次呼叫不起作用.考虑到我以object任何一种方式传递一个类型,传递一个匿名类型Foo(object)工作正常,似乎很傻.为什么ref,与内存位置有关的东西会影响调用Bar()

请考虑以下代码段:

static void Foo(object obj)
{ }

static void Bar(ref object obj)
{ }

static void Main()
{
    // Compiles
    var a = new { };
    Foo(a);

    // Does not compile
    var b = new { };
    Bar(ref b);

    // Compiles
    object c = new { };
    Bar(ref c);
}
Run Code Online (Sandbox Code Playgroud)

我在下面的答案中看到了如何编译代码的建议,但这不是我追求的.我想特别知道为什么ref在将匿名类型传递到正常Foo()工作时使其成为参数会阻止编译.

.net c# anonymous-types ref

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

ASP.NET MVC:构建Json ActionResult的最佳C#方法

过去也曾提出类似的问题,但现在看起来有点过时了.我试图获得目前关于在ASP.NET MVC中构造JsonResult的最佳方法的一致意见.此问题的上下文是使用.NET 4/4.5和MVC 4中提供的最新方法

这是我多年来遇到的一些流行方法:

var json1 = new { foo = 123, bar = "abc" };

var json2 = new Dictionary<string, object>{ { "foo", 123 }, { "bar", "abc" } };

dynamic json3;
json3.foo = 123;
json3.bar = "abc";
Run Code Online (Sandbox Code Playgroud)

还请解释您首选方法的优缺点

.net c# asp.net-mvc json asp.net-mvc-4

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

NUnit错误:不是测试程序集

我有一个包含3个项目的解决方案(一个是用于单元测试的C#类库,另一个是MVC 2 Web应用程序)

我已经包含了NUnit的所有必要参考,并且我已经用[TestFixture][Test]分别正确地修改了类和方法.

它编译没有错误.

我正在使用Visual Studio 2010 Pro

当我尝试在NUnit中打开UnitTests.dll时,出现以下错误:

不是测试组件.该程序集不是使用任何已知的测试框架构建的.

c# asp.net asp.net-mvc nunit unit-testing

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

XML存储库; 保存()或不保存()

对于基于xml的存储库,什么是更好的方法:

1)每次调用存储库时保存对底层xml文档的更改...

public class XmlRepository1
{
    private XDocument xDocument;

    public void CrudOp()
    {
        // Perform CRUD operation...

        // Call Save()
        xDocument.Save(path);
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

2)为最终用户提供SaveChanges()方法......

public class XmlRepository2
{
    private XDocument xDocument;

    public void CrudOp()
    {
        // Perform CRUD operation...

        // DON'T call save
    }

    // Provide a SaveChanges() method to the end-user...
    public void SaveChanges()
    {
        xDocument.Save(path);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的倾向倾向于选项1,因为提供SaveChanges()方法看起来并不像存储库的责任.但是,由于以下几个原因,我在猜测这个决定:

a)在多线程环境中,如果对存储库的调用失败,最终用户可以轻松地回滚更改,从而使对象处于部分变异状态.

b)选项2提供了"类似批处理"的范例,我可以看到它因各种原因而更加灵活.

.net c# xml oop repository

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

使用WCF的在线多人游戏

您认为WCF提供了开箱即用的必要管道,以支持在线多人游戏体验吗?特别是ala WoW,Ultima Online等的实时环境为什么或者为什么?

最重要的考虑因素可能是:

  1. 包含的绑定是否适合此类场景?

  2. 除了任何物理服务器要求,包含的绑定是否符合性能要求?

只是在寻找你对此事的看法!

谢谢

.net c# wcf web-services multiplayer

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

将JavaScript/JSON数组传递给MVC'GET'方法

我正在尝试将一个数组/ IEnumerable Guids传递给MVC'GET'方法,如下所示:

[HttpGet]
public ActionResult ZipResults(IEnumerable<Guid> ids)
{
    using(var zip = new Zip())
    {
        foreach(var id in ids)
        {
            var stream = GetDataStream(id);
            zip.AddEntry("filename.txt", stream);
        }
    }

    var outputStream = new MemoryStream();
    zip.Save(outputStream);

    return FileStreamResult(outputStream, "application/octet-stream"){
        FileDownloadName = "Results.zip" };
}
Run Code Online (Sandbox Code Playgroud)

我的javascript看起来像这样:

$('the-button').click(function(){

    // 1. Get the guids from a table and add to javascript array (works fine)
    // 2. Grey-out screen and show processing indicator (works fine)

    // 3. This is how I'm calling the "ZipResults" action:
    $.ajax({ …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net jquery asp.net-mvc-3

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

无法从程序集'mscorlib加载类型'System.Reflection.IntrospectionExtensions'

我正在使用Unity IoC(Microsoft.Practices.Unity),我可以正常编译,但是我在运行时遇到以下错误:

Could not load type 'System.Reflection.IntrospectionExtensions' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
Run Code Online (Sandbox Code Playgroud)

Unity版本是:3.0.1026.0

.Net 4和此版本的Unity之间是否存在兼容性问题.此外,使用Unity v2时出现相同的错误.如果是这样,我该如何解决这个问题呢?

编辑: 另外,我已经验证我的项目中引用了mscorlib.

.net c# inversion-of-control .net-4.0 unity-container

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

TFS更改构建代理工作目录

我遇到了与此处描述的相同的错误.我正在运行TFS Build中Windows的文件名限制.这个问题的答案建议重新定义构建代理工作目录.我不确定我是否应该这样做.我有几个问题...

  1. 更改构建代理工作目录会影响我,还是每个人都使用构建代理?

  2. 构建代理程序不是由我运行的,它位于由我们公司的不同部门控制的另一台计算机上.我可以进入"管理构建控制器"设置,我似乎能够做出这些改变,我只是害怕!

.net c# tfs tfsbuild tfs2010

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

什么更好?枚举或类型检查?

假设我想将一些xml解析为强类型类.当我得到xml时,我不知道它应该是A型还是B型,直到我打开它并看一看.我可以看看,并返回这样的枚举:

BaseType x = null;
TypeInfoEnum typeInfo = BaseType.GetTypeInfo(xml);

if(typeInfo == TypeInforEnum.TypeA)
{
    x = BaseType.ParseXmlToTypeA(xml);

    // do other work on Type A
}

else if(typeInfo == TypeInfoEnum.TypeB)
{
    x = BaseType.ParseXmlToTypeB(xml);

    // do other work on Type B
}
Run Code Online (Sandbox Code Playgroud)

或者我可以在一种方法中处理解析并检查类型:

BaseType x = BaseType.ParseXml(xml);

if(x.GetType() == typeof(TypeA))
{
    // do work on Type A
}
else if(x.GetType() == typeof(TypeB))
{
    // do work on Type B
}
Run Code Online (Sandbox Code Playgroud)

只是想从你喜欢的设计立场获得别人的想法.现在,细节不是很重要.我只是根据xml中的内容从单个XML源创建两种不同的类型.没什么复杂的.

更新:

谢谢你到目前为止的答案.这里的类型并不重要,但作为一个例子,类层次结构可能如下所示:

class BaseType
{
    public string CommonData { get; set; …
Run Code Online (Sandbox Code Playgroud)

.net c# oop types design-patterns

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