使用Castle Windsor,我有一个配置了瞬态生活方式的组件:
<component id="publish.mapping.default"
service="IMyService, MyAssembly"
type="MyServiceImplementation, Myassembly"
lifestyle="transient" />
Run Code Online (Sandbox Code Playgroud)
将使用这样的:
var service = container.Resolve<IMyService>(componentId);
// service usage ....
// service goes out of scope ...
Run Code Online (Sandbox Code Playgroud)
我的问题是,服务实例是否会在超出范围后进行垃圾收集,或者Castle Windsor会保留引用吗?我发现了这个类似的问题,这意味着后者可能就是这种情况 - 但是在检查了那里发布的链接之后,我不确定讨论是关于保持引用,还是确保在实现IDisposable时对象被处理掉.我的物品不需要处理.
如果Castle Windsor坚持实例,是否有任何简单的方法来阻止这种情况(可能是通过配置)?
编辑
看来,我需要设置发布跟踪策略.可以在xml配置文件中配置,还是需要在代码中设置?是否可以按组件设置版本跟踪策略?
关于SO的另一个问题激发了我在C#中尝试这个代码:
class Program
{
static Program()
{
new Program().Run();
}
static void Main(string[] args) { }
void Run()
{
System.Console.WriteLine("Running");
}
}
Run Code Online (Sandbox Code Playgroud)
这会在运行时打印"正在运行".
我实际上期望编译器抱怨这个.毕竟,如果该类尚未被静态构造函数初始化; 我们怎样才能确定在它上面调用方法是否有效?
那么为什么编译器不会限制我们这样做呢?这有什么重要的使用场景吗?
我知道Singleton模式; 问题的关键是为什么我可以在静态构造函数完成之前调用实例上的方法.到目前为止,JaredPar的答案对此有一些很好的推理.
我想在WinRT(Windows 8)应用程序中使用MVVM,我的一个要求是能够将事件挂钩到命令(ICommand).这意味着我必须动态地向WinRT事件添加处理程序.这里有一个很好的解释如何做到这一点,但我的问题是在编译时不知道处理程序类型(即它并不总是RoutedEventHandler在那个例子中).
我开始编写该代码的通用实现,我使用表达式树构建委托.那部分有效.我的问题是WindowsRuntimeMarshal.AddEventHandler动态调用失败:
var rtMarshalType = typeof (WindowsRuntimeMarshal);
var eventHandlerMethod = rtMarshalType.GetRuntimeMethods().Single(x => x.IsStatic && x.Name == "AddEventHandler");
MethodInfo closedAddMethod = eventHandlerMethod.MakeGenericMethod(handlerType);
closedAddMethod.Invoke(null, new object[] {add, remove, handler});
Run Code Online (Sandbox Code Playgroud)
这在Invoke调用时失败并抛出InvalidOperationException并显示以下消息:
API'System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMarshal.AddEventHandler [ItemClickEventHandler](System.Fun
2[Windows.UI.Xaml.Controls.ItemClickEventHandler,System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken], System.Action1 [System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken],Windows.UI.Xaml.Controls.ItemClickEventHandler)'不能用于目前的平台.有关 详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=248273.
我知道我有正确的类型,因为当我用这个替换上面的4行代码(硬编码事件处理程序类型,这不是我想要的),然后代码工作并且事件按预期附加:
WindowsRuntimeMarshal.AddEventHandler<ItemClickEventHandler>(add, remove, handler);
Run Code Online (Sandbox Code Playgroud)
作为参考,这三个参数定义如下(可以肯定的是,我的表达式树构建代码不是问题,我正在使用这些委托的显式定义,即使在尝试动态调用时AddEventHandler,仍然失败):
Func<ItemClickEventHandler, EventRegistrationToken> add =
a => (EventRegistrationToken) eventInfo.AddMethod.Invoke(instance, new object[] {a});
Action<EventRegistrationToken> remove = a => eventInfo.RemoveMethod.Invoke(instance, new object[] {a});
ItemClickEventHandler handler = (s, args) …Run Code Online (Sandbox Code Playgroud) 此ServiceStack客户端代码有效:
var client = new JsonServiceClient("http://localhost:32949/test");
var request = new MyRequest { ClassificationId = new ClassificationId (21300) };
var response = client.Post(request);
Run Code Online (Sandbox Code Playgroud)
然而,当观察Fiddler的交通时,我什么也看不见.我想观察流量,以便更好地了解如何为我必须编写的其他客户端构建所需的JSON请求.
为了使上面的代码工作,我不得不引用具有该服务的程序集,我怀疑ServiceStack正在进行一些聪明的调用以避免发送HTTP请求.是这样的吗?
为什么我没有看到Fiddler的任何流量,我该如何强行呢?
通过浏览器到localhost端点的HTTP流量正确显示.
我有以下场景:
用户进行一些更改.时间流逝,产品的新分支被创建.稍后,确定shelveset包含我们将在新分支中需要的代码.
默认情况下; Visual Studio只能将搁置集更改恢复到搁置的位置.是否有可能在新分支中恢复我的shelveset?我不希望将代码检入原始分支,因为它会破坏内容.
我们希望通过Team Foundation Server为客户提供报告错误以及查看现有错误和工作项的权限.
为此,我们需要一个客户友好的网络前端.它应该易于使用并具有良好的UI.我知道Web Access,但认为它太过面向开发人员而无法让我们的客户使用.
有没有好的开源或商业产品呢?重要的是,我们将能够根据我们的需求定制产品.
在Windows服务中,我需要检测计算机何时进入睡眠状态以及何时唤醒,并在这些事件上运行一些代码.这需要在睡眠,待机和休眠电源模式下完成.
我怎么做 ?
我需要采访一些人担任Sharepoint Architect/Developer角色.
虽然我精通.NET,但我在Sharepoint上的工作很少,所以我不确定如何测试候选人的Sharepoint技能.你对考生的考试有什么建议吗?
请提出我可以问候选人的问题; 并且请指明您的问题是否为Sharepoint开发人员的"必须知道"知识.请提供您问题的答案.
当我对MSSQL进行查询时,我可以发出这些语句来获取有关时间的统计信息以及随查询返回的IO.
SET STATISTICS IO ON;
SET STATISTICS TIME ON;
Run Code Online (Sandbox Code Playgroud)
它们是查询性能的良好第一眼指示器.MySql中是否存在类似的内容,如何启用它?
c# ×5
.net ×3
.net-4.5 ×1
asp.net ×1
bug-tracking ×1
fiddler ×1
json ×1
mysql ×1
nhibernate ×1
power-state ×1
rest ×1
servicestack ×1
sharepoint ×1
shelveset ×1
sql ×1
sql-server ×1
tfs ×1
tfs2008 ×1
transient ×1
unshelve ×1
web-frontend ×1