使用.NET 4,我很困惑编译器无法解决下面示例中的第一个方法调用.
using System;
namespace MethodResolutionTest
{
class Program
{
static void Main(string[] args)
{
NonGeneric foo = null;
// ambiguous
foo.Ext1(x => new NonGeneric());
// resolves to first Ext1
foo.Ext1(x => new NonGeneric(), 1);
// resolves to first Ext2
foo.Ext2(x => new NonGeneric());
// resolves to first Ext2
foo.Ext2(x => new NonGeneric(), 1);
// resolves to second Ext2
foo.Ext2(x => "foo");
// resolves to second Ext2
foo.Ext2(x => "foo", 1);
// resolves to first Ext3
foo.Ext3(x => new NonGeneric()); …Run Code Online (Sandbox Code Playgroud) 假设我有以下视图模型:
public class AddressViewModel : ReactiveObject
{
private string line;
public string Line
{
get { return this.line; }
set { this.RaiseAndSetIfChanged(x => x.Line, ref this.line, value); }
}
}
public class EmployeeViewModel : ReactiveObject
{
private AddressViewModel address;
public AddressViewModel Address
{
get { return this.address; }
set { this.RaiseAndSetIfChanged(x => x.Address, ref this.address, value); }
}
}
Run Code Online (Sandbox Code Playgroud)
现在假设EmployeeViewModel我希望公开一个具有最新值的属性Address.Line:
public EmployeeViewModel()
{
this.changes = this.ObservableForProperty(x => x.Address)
.Select(x => x.Value.Line)
.ToProperty(this, x => x.Changes);
} …Run Code Online (Sandbox Code Playgroud) 我有以下代码将子视图控制器采用到父级:
public static void AdoptViewController(this UIViewController parent, UIViewController child)
{
parent.AddChildViewController(child);
parent.View.AddSubview(child.View);
child.DidMoveToParentViewController(parent);
}
Run Code Online (Sandbox Code Playgroud)
除非父视图已经可见,否则这种方法大多正常.在这种情况下,子视图控制器不会收到ViewWillAppear事件.这会导致整个应用程序出现连锁问题.
我发现这篇帖子,建议这样做:
public static void AdoptViewController(this UIViewController parent, UIViewController child)
{
parent.AddChildViewController(child);
child.BeginAppearanceTransition(true, false);
parent.View.AddSubview(child.View);
child.EndAppearanceTransition();
child.DidMoveToParentViewController(parent);
}
Run Code Online (Sandbox Code Playgroud)
但是,这会导致在ViewWillAppear父级尚未显示的情况下将事件提升两次.我重新编写了一些代码:
public static void AdoptViewController(this UIViewController parent, UIViewController child)
{
parent.AddChildViewController(child);
// could also use ViewIfLoaded for later iOS versions
var parentAlreadyVisible = parent.IsViewLoaded && parent.Window != null;
if (parentAlreadyVisible)
{
child.BeginAppearanceTransition(true, false);
}
parent.View.AddSubview(child.View);
if (parentAlreadyVisible)
{
child.EndAppearanceTransition();
}
child.DidMoveToParentViewController(parent);
} …Run Code Online (Sandbox Code Playgroud) 尽管3D图形引擎取得了很大的进步,但令人感到奇怪的是,音频没有得到同样的关注.现代游戏可以实时渲染3D场景,但我们仍然可以获得与这些场景相关的或多或少的预先录制的音频.
想象一下 - 如果你愿意的话 - 一个3D引擎不仅可以模拟物品的物理外观,还可以模拟它们的音频属性.从这些模型中,它可以根据接触到的材料,速度,与虚拟耳朵的距离等动态生成音频.现在,当你蹲在沙袋后面,子弹飞过你的头上时,每一个都会产生一种独特而逼真的声音.
这种技术的明显应用是游戏,但我确信还有很多其他的可能性.
这种技术是否正在积极开发?有谁知道任何试图实现这一目标的项目?
谢谢,肯特
我正在尝试诊断特定查询对SQLite的速度慢的原因.似乎有很多关于查询优化器如何工作的信息,但关于如何实际诊断问题的信息很少.
特别是,当我分析数据库时,我得到了预期的sqlite_stat1表,但我不知道stat列告诉我什么.示例行是:
MyTable,ix_id,25112 1 1 1 1
Run Code Online (Sandbox Code Playgroud)
"25112 1 1 1 1"究竟是什么意思?
作为一个更广泛的问题,有没有人有关于诊断SQLite查询性能的最佳工具和技术的任何好资源?
谢谢
我有什么是log4net中的错误,或者是我的误解.
我正在尝试将LogicalThreadContext一些数据与调用上下文相关联,并将其传播到该上下文中任何线程所做的任何日志语句.这是声称的优势LogicalThreadContext了ThreadContext.
我无法让传播工作,所以我整理了一个简单的单元测试,看看它是否可行,但事实并非如此.这里是:
[Fact]
public void log4net_logical_thread_context_test()
{
XmlConfigurator.Configure();
var log = LogManager.GetLogger(GetType());
var waitHandle = new ManualResetEvent(false);
using (LogicalThreadContext.Stacks["foo"].Push("Some contextual info"))
{
log.Debug("START");
ThreadPool.QueueUserWorkItem(delegate
{
log.Debug("A DIFFERENT THREAD");
waitHandle.Set();
});
waitHandle.WaitOne();
log.Debug("STOP");
}
}
Run Code Online (Sandbox Code Playgroud)
我的log4net配置如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="log.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%thread]|[%property{foo}]|%message%newline"/>
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="FileAppender" />
</root>
</log4net>
</configuration> …Run Code Online (Sandbox Code Playgroud) 我正在读取一个xml文件,并希望根据应用程序的位置从相对目录创建它,类似于使用Server.MapPath的ASP.NET或使用tilda.
如何在WPF中获得相对路径?
WORKS: XDocument xmlDoc = XDocument.Load(@"c:\testdata\customers.xml");
DOES NOT WORK: XDocument xmlDoc = XDocument.Load(@"~\Data\customers.xml");
DOES NOT WORK: XDocument xmlDoc = XDocument.Load(@"~/Data/customers.xml");
Run Code Online (Sandbox Code Playgroud) 是否有任何工具可以让我轻松创建交互式架构图?
我设想能够在高层次上查看架构的图形描述.然后,我就可以点击该架构的特定部分并钻入其中,从而揭示该部分的更详细的细分.然后,该过程可以根据需要继续进行多个级别.
有谁知道允许我创造这种体验的任何工具?或者我应该尝试使用Visio/Powerpoint来实现这一目标?
我正在尝试获取项目根目录下的所有单元测试程序集的列表.我可以这样做:
<CreateItem Include="**\bin\**\*.UnitTest.*.dll">
<Output TaskParameter="Include" ItemName="Items"/>
</CreateItem>
Run Code Online (Sandbox Code Playgroud)
但是,由于它们存在于多个子目录中,因此会多次找到相同的DLL.有没有一种简单的方法让我根据项目元数据(即文件名和扩展名)进行规范化,以便获得一个唯一的单元测试DLL列表?或者我是否必须编写自己的任务?
我有一个具有以下结构的方法:
public Task InitializeAsync()
{
var taskCompletionSource = new TaskCompletionSource<bool>();
Task firstTask = ...;
// secondTask calls taskCompletionSource.TrySetResult(true) once it considers itself "done"
Task secondTask = firstTask.ContinueWith(..., TaskContinuationOptions.OnlyOnRanToCompletion);
Action<TasK> errorContinuation = x =>
{
taskCompletionSource.SetException(e.Exception);
};
firstTask.ContinueWith(errorContinuation, TaskContinuationOptions.OnlyOnFaulted);
secondTask.ContinueWith(errorContinuation, TaskContinuationOptions.OnlyOnFaulted);
return taskCompletionSource.Task;
}
Run Code Online (Sandbox Code Playgroud)
重要的:
InitializeAsyncsecondTask决定之前,返回的任务不会被视为完成secondTask只有firstTask成功才会运行firstTask或secondTask导致整个任务失败我想知道的是,在实现相同的功能的同时,是否有更简洁的方式来表达这一点.我正在使用.NET 4.0,但我对4.5是否也使这更容易感兴趣.