我需要从ASP.NET中的bin文件夹加载一个xML文件(MVC,而不是它会计算).我无法获取bin文件夹路径,否则加载文件..我需要提供以下方法:
using(var file = System.IO.File.OpenRead(/* something */))
{
}
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序运行良好作为一个简单的WPF应用程序在主窗口级别上具有GotFocus上的事件处理程序,如下所示:
private void MainWindowGotFocus(object sender, RoutedEventArgs e)
{
var element = FocusManager.GetFocusedElement(this) as FrameworkElement;
if (element != null)
{
//...
Run Code Online (Sandbox Code Playgroud)
然而,当设置为XBAP应用程序时,这种行为很奇怪(几乎完全相同的代码 - 主要的可视元素是Page而不是Window,但事件仍然可用并被触发).
在这种情况下(XBAP/wpf浏览器应用程序)元素始终为null.
有任何想法吗?:(
我们来看看这个代码示例:
using System;
using System.IO;
namespace ConsoleApplication25
{
class Program
{
static void Main()
{
var bytes = new byte[] { 1, 2, 3 };
var trimChars = new[] { '"' };
var path = Environment.CommandLine.Trim().Trim(trimChars);
File.WriteAllBytes(path, bytes);
}
}
}
Run Code Online (Sandbox Code Playgroud)
运行此程序(程序试图覆盖自身)会导致抛出异常:
System.IO.IOException was unhandled
Message=The process cannot access the file 'F:\TEMP\ConsoleApplication25\ConsoleApplication25\bin\Debug\ConsoleApplication25.vshost.exe' because it is being used by another process.
Source=mscorlib
StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, …
Run Code Online (Sandbox Code Playgroud) 我正在玩Spring Boot,我正在尝试构建一个需要ServiceImpl
时要解决的实例Service
.目前我正在注释实现,@Component
但这并没有让我有机会按我的意愿构建实例.
该ServiceImpl
应用含于磁盘上的文件的路径的字符串构成.我想@SpringBootApplication
在应用程序类的main方法中执行此操作.
也许只是我来自一个很长的.NET背景,我们通常设置IoC容器,如:
Service service = new Service("C:\\data.bin");
container.RegisterSingleton<IService>(service); // now whoever asks for a IService will receive this precise instance
Run Code Online (Sandbox Code Playgroud)
这在Spring世界有意义吗?
LE:我很清楚GoF单例定义(即阻止其他人创建类的实例) - 我不是针对这个.
singleton spring dependency-injection inversion-of-control spring-boot
自2007年预览1(12月)以来,我一直在研究,使用和使用ASP.NET MVC.自2008年以来,我一直是它的粉丝,我一直支持它.
然而,我一直听到并阅读"ASP.NET MVC强制严格分离关注点",包括由Rob Conery,Scott Hanselman,Phil Haack和Scott Guthrie在Professional ASP.NET MVC 1.0中阅读.
我不明白的是执法.如果我用除了之外的动作定义我的控制器怎么办?
return View();
Run Code Online (Sandbox Code Playgroud)
在视图(aspx视图引擎)中我做的一切?(数据获取,业务逻辑,决策制定,渲染等)
它是如何(ASP.NET MVC)ENFORCE我分开的关注?
我认为这是一种公然的夸大其词,应该是"建议分离关注点".
你能说服我强制执行吗?
我正在摆弄Silverlight的TCP通信,我被迫使用System.Net.Sockets.Socket类,它在Silverlight运行时只有异步方法.
我想知道如果两个线程在很短的时间内在另一个Socket实例上调用SendAsync会发生什么?
我唯一担心的是没有通过TCP通道的混合字节.
作为一个异步方法,我认为消息被放置在一个队列中,单个线程从该队列中出列,因此不会发生这样的事情(在线路上混合消息的内容).
但我不确定,MSDN没有在方法的描述中说明任何内容.有人确定吗?
EDIT1:不,在调用SendAsync之前锁定对象,例如:
lock(this._syncObj)
{
this._socket.SendAsync(arguments);
}
Run Code Online (Sandbox Code Playgroud)
因为这会序列化发送数据的请求而不是实际发送的数据,所以无济于事.
我在使用小型Silverlight 4应用程序时为UI提供本地化字符串时遇到了一些困难.基本上我放了一个文件夹"Resources"并在其中放置了两个资源文件:
Statuses.resx
Statuses.ro.resx
Run Code Online (Sandbox Code Playgroud)
我有一个enum状态:
public enum Statuses
{
None,
Working
}
Run Code Online (Sandbox Code Playgroud)
和转换器:
public class StatusToMessage : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (!Enum.IsDefined(typeof(Status), value))
{
throw new ArgumentOutOfRangeException("value");
}
var x = Statuses.None;
return Statuses.ResourceManager.GetString(((Status)value).ToString(), Thread.CurrentThread.CurrentUICulture);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
在视图中我有一个文本块:
<TextBlock Grid.Column="3" Text="{Binding Status, Converter={StaticResource StatusToMessage}}" />
Run Code Online (Sandbox Code Playgroud)
在视图呈现时调用转换器,但无论Thread.CurrentThread.CurrentUICulture设置什么,它始终返回默认的文化值.
在进一步检查后,我拆开了XAP结果文件,将生成的DLL文件带到Reflector并检查了嵌入的资源.它只包含默认资源!!
回到我正在检查其属性的两个资源文件:
构建操作:嵌入式资源复制到输出目录:不复制自定义工具:ResXFileCodeGenerator自定义工具命名空间:[empty]
两个资源(.resx)文件都具有这些设置..Designer.cs结果文件如下:
Statuses.Designer.cs:
//------------------------------------------------------------------------------
// <auto-generated>
// …
Run Code Online (Sandbox Code Playgroud) silverlight resources localization embedded-resource silverlight-4.0
XAML XAML Forms中是否支持为iOS创建导航栏?我搜索了所有Xamarin支持,论坛和互联网..
在这一点上,我不相信有支持,但我真的不想重新发明轮子,如果它已经发明..
编辑:
通过导航栏我的意思是这个东西:
我有类似的服务:
public class Service : IService
{
public Task<string> GetData()
{
var client = new HttpClient();
var str = client.GetStringAsync("http://www.example.com");
return str;
}
//...
}
Run Code Online (Sandbox Code Playgroud)
现在,使用装饰器模式我想要计时这个方法
public class TimedService : IService
{
private readonly IService _service;
public TimedService(IService service)
{
_service = service;
}
public Task<string> GetData()
{
using(var timer = new TimerContext())
return _service.GetData();
}
}
Run Code Online (Sandbox Code Playgroud)
TimerContext
构建之后的开始计时并将其停止处理并将其发布到某种日志中,而不需要返回测量的时间.
现在使用上述方法不会计算任务的实际执行时间,而只是创建和检索Task
实例.
如何Task
从TimedService 返回一个,当运行时,它将启动计时器,执行原始Task
(从真实Service
类)并处理计时器?
我开始认为我做错了什么.我的意思是他们确实最终放置了System.String.IsNullOrWhitespace但没有放置ArgumentEmptyException类.
public FilterItem(string name, IEnumerable<string> extensions)
{
if (string.IsNullOrWhiteSpace(name))
{
throw new ArgumentNullException("name");
}
if (extensions == null)
{
throw new ArgumentNullException("extensions");
}
if (extensions.Count() == 0)
{
throw new ArgumentOutOfRangeException("extensions");
}
this.Name = name;
this.Extensions = extensions;
}
Run Code Online (Sandbox Code Playgroud)
抛出ArgumentOutOfRangeException感觉不自然.在我看来,ArgumentException的一个实例太笼统了.
我很容易创建一个新的异常类,以这种方式调用它并完成它.让我感到困惑的是,它不在BCL/FCL中,我开始认为有充分的理由不拥有它.
应该有吗?
.net ×3
c# ×3
asynchronous ×2
io ×2
silverlight ×2
arguments ×1
asp.net ×1
asp.net-mvc ×1
bin-folder ×1
exception ×1
focus ×1
ioexception ×1
localization ×1
medium-trust ×1
process ×1
resources ×1
singleton ×1
spring ×1
spring-boot ×1
task ×1
tcp ×1
view ×1
wpf ×1
xamarin ×1
xamarin.ios ×1
xaml ×1
xbap ×1