当在编译时未知类型参数但是在运行时动态获取时,调用泛型方法的最佳方法是什么?
考虑以下示例代码 - 在Example()方法内部,GenericMethod<T>()使用Type存储在myType变量中调用的最简洁方法是什么?
public class Sample
{
public void Example(string typeName)
{
Type myType = FindType(typeName);
// What goes here to call GenericMethod<T>()?
GenericMethod<myType>(); // This doesn't work
// What changes to call StaticMethod<T>()?
Sample.StaticMethod<myType>(); // This also doesn't work
}
public void GenericMethod<T>()
{
// ...
}
public static void StaticMethod<T>()
{
//...
}
}
Run Code Online (Sandbox Code Playgroud) TL; DR:为什么我需要在这个条件组件中使用空 <CreateFolder/>元素才能使其工作?
我正在为一个内部应用程序组装一个简单的基于WiX的安装程序.此安装程序需要部署标准配置文件(普通.NET .config文件),然后使用msiexec在命令行上传递的属性对其进行自定义.
其中一个自定义是仅在已定义RUNTIME属性时才创建特定的应用程序设置.这是WiX组件:
<Component Id="C.Rbnz.Fsis.CollectionPeriodService.exe.config.runtime"
Guid="*">
<Condition>
<![CDATA[RUNTIME]]>
</Condition>
<CreateFolder/>
<util:XmlFile Id="X.Runtime.1"
Action="createElement"
ElementPath="/configuration/appSettings"
File="[#F.Rbnz.Fsis.CollectionPeriodService.exe.config]"
Name="add"
Sequence="2"/>
<util:XmlFile Id="X.Runtime.2"
File="[#F.Rbnz.Fsis.CollectionPeriodService.exe.config]"
ElementPath="/configuration/appSettings/add[\[]not(@key)[\]]"
Action="setValue"
Name="key"
Value="RunTime"
Sequence="3"/>
<util:XmlFile Id="X.Runtime.3"
File="[#F.Rbnz.Fsis.CollectionPeriodService.exe.config]"
ElementPath="/configuration/appSettings/add[\[]@key='RunTime'[\]]"
Action="setValue"
Name="value"
Value="[RUNTIME]"
Sequence="4"/>
</Component>
Run Code Online (Sandbox Code Playgroud)
这正如我想要的那样 - 如果在命令行上指定了RUNTIME,则会msiexec创建新元素; 如果没有,没有任何反应.
为什么我必须<CreateFolder/>在此组件中使用空?
当我试图让这个工作时,我找到了" Wix条件声明 ",它显示了一个工作组件,但没有解释为什么<CreateFolder/>是必要的.
删除<CreateFolder/>给我这个错误:
ICE18:组件的KeyPath:'C.Rbnz.Fsis.CollectionPeriodService.exe.config.runtime'是目录:'INSTALLDIR'.目录/组件对必须在CreateFolders表中列出.
一旦你知道这意味着什么,我相信,这是非常有用的.
对于支持Microsofts标准SCC API的Subversion客户端,您有什么建议?
到目前为止,我发现了两种可能性:
这些都不是特别引人注目 - 所以我想我会转向StackOverflow.
哪些Subversion客户端支持SCC API,适合与Sybase PowerBuilder一起使用?
开源首选,但考虑商业解决方案 - 质量/可靠性比成本(在合理范围内)更重要.
背景信息:Subversion服务器运行v1.6,其他工作已经使用TortoiseSVN和AnkhSVN作为客户端.
更新:为什么不使用TortoiseSVN并完成它?
我的部分问题是Powerbuilder工作方式的特殊性 - 应用程序的所有部分都存储在PBL("pibble")文件中.在文件系统级别使用源代码控制,您只能签入/签出整个应用程序.如果你想逐件管理事物,你必须从PowerBuilder 内部通过基于SCC的集成来完成.
更新:那些PBL文件是什么?
对于那些感兴趣的人,还有一些细节.
PowerBuilder将其代码存储在PowerBuilder库(PBL)中,而不是单独的ASCII文本文件[this]为集成增加了一层复杂性.(http://pbdj.sys-con.com/node/42500)
我正在开发一个简单的基于WPF的屏幕保护程序,无法使缩略图预览工作.
当您打开显示控制面板并转到配置屏幕保护程序时,所选的屏幕保护程序应在对话框中显示缩略图预览:

我在网上找到了很多关于如何做到这一点的好例子,包括:
按照这些示例,我无法正常工作 - 预览缩略图变为黑色,但没有其他内容出现.下载这些(以及其他一些)并运行它们具有相同的结果 - 空白预览缩略图.我之前在Windows 7上做过这个并不难,所以我有点沮丧.
将二进制文件复制到Windows XP计算机上,我发现每个二进制文件都成功显示了预览缩略图.
因此,Windows 7和Windows 8之间显然有些变化.
我需要做些什么来使我的WPF屏幕保护程序在Windows 8上正确显示缩略图预览?
任何人都可以告诉我哪种方法更适合WPF中的验证.
在性能,内存泄漏,代码可维护性和重用方面.
我正在尝试为持续集成设置一些构建脚本,我发现了一些奇怪的东西.
我的解决方案从Visual Studio 2010编译得很好,但是当我使用MSBuild从命令行构建完全相同的东西时失败并出现错误.
这是我从命令行构建中得到的错误.
C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.WinFX.targets(269,9):
错误MC1000:未知的生成错误,
'无法解析对程序集的依赖性'Microsoft.Windows.Design.Extensibility,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'因为它尚未预加载.使用ReflectionOnly API时,必须通过ReflectionOnlyAssemblyResolve事件按需预加载或加载相关的程序集.
[C:\ Dev\Market Watch\src\Console\MarketWatch.Console\Rbnz.MarketWatch.Console.csproj]
我已经检查了所有源代码的参考资料Microsoft.Windows.Design.Extensibility,但根本没有找到任何参考资料.我还检查了我们从这个项目中引用的所有二进制文件,包括一些DevExpress库.
我的MSBuild命令行如下所示:
MsBuild.exe c:\Dev\MarketWatch\src\Capture\Capture.sln
/t:rebuild
/verbosity:quiet
/filelogger
/fileloggerparameters:LogFile=c:\Dev\MarketWatch\build\Logs\capture.msbuild.log
Run Code Online (Sandbox Code Playgroud)
我是否应该在MsBuild命令行中包含一些内容,以使命令行构建与Visual Studio运行的相同?
更新14/4
我正在尝试使用JetBrains dotTRACE Memory分析IIS托管的WCF Web应用程序的内存使用情况.
在过去,我已经在同一个Web应用程序上成功使用了dotTRACE Performance,一切都运行良好,但我无法启动dotTRACE Memory.
当我尝试启动内存跟踪时,我得到的是:

搜索JetBrains的(通常很好的)支持文档没有发现任何结果.
有任何想法吗?
服务器:Windows 2008 R2(64位)
IIS:7.0
dotTRACE内存:3.5.360(截至今日的最新版本)
我想要提供的应用程序位于通过Active Directory帐户登录的专用应用程序池中.
我在某处读到DataContext = this用户控件的构造函数中的设置是不好的做法(虽然无法找到).为什么这是不好的做法?有什么选择?
我在数据库中有一个包含9列的表,如果需要,我希望能够只加载它的一些字段.
我如何使用Entity Framework 4做到这一点?
例如,我的表有以下字段:
ID, FirstName, LastName, FotherName, BirthDate, Mobile, Email
Run Code Online (Sandbox Code Playgroud)
我希望能够只获取这些列:
ID, FirstName, LastName
Run Code Online (Sandbox Code Playgroud)
我的项目是一个ASP.NET MVC 3应用程序,用SQLServer 2008 Express和EF 4.1.
asp.net-mvc lambda entity-framework entity-framework-4.1 asp.net-mvc-3
在维护大量SQL Server Integration Services 2008 R2软件包时,我遇到了一个古怪的问题.
这些包经常使用脚本任务,每个脚本任务包含用于与某些内部Web服务集成的C#代码.
编辑其中一个脚本涉及以下步骤:
这是等待,以粗体突出显示,让我感到沮丧.
在这些时间内没有CPU活动,没有磁盘IO,没有网络流量 - 编辑器似乎刚刚冻结.
顺便说一句 - 那些时间是可靠的 - 我在过去的几天里用秒表来测量它们,它们的变化小于我在击中秒表上的开始/停止按钮时的准确度.
我能找到的唯一线索是netstat在暂停期间显示额外的网络连接:
C:\>netstat -o -b
Active Connections
Proto Local Address Foreign Address State PID
TCP fsis-datam-dev2:3478 akamai-9.fx.net.nz:http SYN_SENT 700
[VSTA.exe]
Run Code Online (Sandbox Code Playgroud)
我目前的假设是延迟是某种超时,因为SSIS(或者可能是Visual Studio Tools for Applications编辑器)出于某种原因"打电话回家".有问题的机器没有互联网连接,因此请求是徒劳的.
wpf ×3
c# ×2
asp.net-mvc ×1
datacontext ×1
dottrace ×1
generics ×1
iis-7 ×1
lambda ×1
msbuild ×1
msiexec ×1
msscc ×1
powerbuilder ×1
reflection ×1
screensaver ×1
ssis ×1
svn ×1
vsta ×1
wcf ×1
windows-8 ×1
wix ×1