我正在使用一个期望的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) 我想知道为什么第一次呼叫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()工作时使其成为参数会阻止编译.
过去也曾提出类似的问题,但现在看起来有点过时了.我试图获得目前关于在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)
还请解释您首选方法的优缺点
我有一个包含3个项目的解决方案(一个是用于单元测试的C#类库,另一个是MVC 2 Web应用程序)
我已经包含了NUnit的所有必要参考,并且我已经用[TestFixture]和[Test]分别正确地修改了类和方法.
它编译没有错误.
我正在使用Visual Studio 2010 Pro
当我尝试在NUnit中打开UnitTests.dll时,出现以下错误:
不是测试组件.该程序集不是使用任何已知的测试框架构建的.
对于基于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提供了"类似批处理"的范例,我可以看到它因各种原因而更加灵活.
您认为WCF提供了开箱即用的必要管道,以支持在线多人游戏体验吗?特别是ala WoW,Ultima Online等的实时环境为什么或者为什么?
最重要的考虑因素可能是:
包含的绑定是否适合此类场景?
除了任何物理服务器要求,包含的绑定是否符合性能要求?
只是在寻找你对此事的看法!
谢谢
我正在尝试将一个数组/ 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) 我正在使用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.
我遇到了与此处描述的相同的错误.我正在运行TFS Build中Windows的文件名限制.这个问题的答案建议重新定义构建代理工作目录.我不确定我是否应该这样做.我有几个问题...
更改构建代理工作目录会影响我,还是每个人都使用构建代理?
构建代理程序不是由我运行的,它位于由我们公司的不同部门控制的另一台计算机上.我可以进入"管理构建控制器"设置,我似乎能够做出这些改变,我只是害怕!
假设我想将一些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) c# ×10
.net ×9
asp.net ×2
asp.net-mvc ×2
oop ×2
.net-4.0 ×1
jquery ×1
json ×1
multiplayer ×1
nunit ×1
ref ×1
reflection ×1
repository ×1
tfs ×1
tfs2010 ×1
tfsbuild ×1
types ×1
unit-testing ×1
wcf ×1
web-services ×1
xml ×1