我有MyClass一个方法的类:
public bool MyMethod(out DateTime? MyDate) {
...
}
Run Code Online (Sandbox Code Playgroud)
我想以下列方式调用此方法:
var q = from mc in MyClasses.AsEnumerable()
from output in mc.MyMethod(out dt) // how to declare dt?
select new { mc, output, dt };
Run Code Online (Sandbox Code Playgroud)
显然这不编译,因为我没有声明dt.我可以在查询之外声明它,但这并没有给我一种温暖的模糊感:(a)我不喜欢在大于必要范围的级别声明变量,并且(b)它不是立即和直观的显而易见的是,将为查询中的每一行正确计算该值.
是否有一些语法允许我DateTime? dt在查询中声明?
我的数据库有大约30个视图,其中大多数都引用了该服务器上的另一个数据库(称之为DB1).
现在,在不考虑原因的情况下,我需要将所有这些视图更新到DB2本地服务器上.
我不想在每个视图上手动执行此操作.是否有一些我可以运行的SQL查询将在我的所有视图中用'DB2'替换所有出现的字符串'DB1'?
我正在ASP.NET MVC中编写一个MVC Web应用程序,该应用程序应该是由我的一位同事编写的Flash对象.我不知道任何Flash; 他不懂任何C#/ ASP.NET; 所以问题就是这样!
我网页上的代码如下所示:
<head>
(blah blah blah...)
<script type="text/javascript" src="/FlashStuff/js/swfobject.js"></script>
<script type="text/javascript">
var GP_MLM_flashvars = {};
GP_MLM_flashvars.remote = 'true';
GP_MLM_flashvars.streamprovider = 'localweb';
GP_MLM_flashvars.referer = '';
GP_MLM_flashvars.bgcolor = '#000033';
var GP_MLM_params = {};
GP_MLM_params.menu = 'false';
GP_MLM_params.allowFullScreen = 'true';
GP_MLM_params.salign = 'tl';
GP_MLM_params.scale = 'noscale';
GP_MLM_params.wmode = 'opaque';
GP_MLM_params.bgcolor = '#000033';
var GP_MLM_attributes = {};
GP_MLM_attributes.id = 'GP_MLM';
GP_MLM_attributes.name = 'GP_MLM';
swfobject.embedSWF('/FlashStuff/swf/GP_MLM.swf', 'GP_MLM', '100%', '100%', '9', '/FlashStuff/expressInstall.swf', GP_MLM_flashvars, GP_MLM_params, GP_MLM_attributes);
</script>
</head>
(etc.)
Run Code Online (Sandbox Code Playgroud)
当我使用VS Development Server调试此页面时,它看起来非常愉快并且工作正常.但是,如果我尝试使用本地IIS(7.5)服务器进行调试,则Flash对象不会被加载.
我猜我需要在IIS上做一些事情来启用Flash对象 …
我正在处理与C#WinForms应用程序相关的错误,该应用程序以启动画面启动,然后关闭启动画面并打开登录表单.在某些电脑上一切正常.在其他情况下,会出现登录表单,但闪烁的标题栏会在几次闪烁之后完全失去焦点.光标仍在"用户名"文本框中闪烁,但应用程序没有焦点,当您开始输入时,没有任何反应,这对用户来说非常烦人.
操作系统运行似乎没有区别(我们已经尝试过Windows 7和Server 2008),并且在启动应用程序后我们特别没有任何键盘或鼠标输入.
现在 - 有没有人知道什么可能导致应用程序失去焦点?
或者,您将如何调试此问题?我们无法在Visual Studio调试环境中复制问题,但这并不让我感到惊讶,因为我猜这是编译的应用程序如何与操作系统交互的问题......或者我错了?
编辑#1:我认为这是由@vinodpthmn解决的,确保在登录表单出现之前正确关闭了启动画面,但这似乎没有帮助.所以我创建了一个记录器来跟踪所有事件和线程,并找到了以下有趣的日志条目:
Thread 01 - 2012/03/29 12:51:09.693 - Show splash screen
Thread 01 - 2012/03/29 12:51:20.350 - Splash screen closed
Thread 01 - 2012/03/29 12:51:20.490 - Login Form Activated
Thread 01 - 2012/03/29 12:51:20.522 - Login Form Load
Thread 01 - 2012/03/29 12:51:25.694 - Login Form deactivated
Thread 01 - 2012/03/29 12:51:25.694 - Active form =
Thread 01 - 2012/03/29 12:51:25.694 - Active app =
Run Code Online (Sandbox Code Playgroud)
显示活动表单和应用程序的最后一行分别显示Form.ActiveForm和Windows中当前活动的应用程序(此处的代码).它们都是空的/无效的.即便如此,即使在登录表单中加载I调用Activate() …
我有一个扩展方法:
public static int DoStuff(this MyEnum? enumValue)
{
...
}
Run Code Online (Sandbox Code Playgroud)
我想在一个MyEnum已知不为null 的值上调用它:
MyEnum enumVal = ...
var x = enumVal.DoStuff(); // compiler error!
Run Code Online (Sandbox Code Playgroud)
错误:
错误CS1928:'MyEnum'不包含'DoStuff'的定义,最好的扩展方法重载'MyExtensions.DoStuff(MyEnum?)'有一些无效的参数
我可以通过声明扩展的重载来解决它:
public static int DoStuff(this MyEnum enumValue)
{
return DoStuff((MyEnum?)enumValue);
}
Run Code Online (Sandbox Code Playgroud)
或者,我可以显式调用扩展类:
var x = MyExtensions.DoStuff(enumVal);
Run Code Online (Sandbox Code Playgroud)
但这不直观.为什么不能Nullable<T>接受一个类型的扩展T,就像任何正常的方法签名一样?
c# ×3
asp.net-mvc ×1
flash ×1
iis-7.5 ×1
linq ×1
nullable ×1
parameters ×1
sql ×1
t-sql ×1
winforms ×1