我试图在一个简单的静态类中循环一些静态属性,以便用它们的值填充组合框,但是遇到了困难.
这是简单的类:
public static MyStaticClass()
{
public static string property1 = "NumberOne";
public static string property2 = "NumberTwo";
public static string property3 = "NumberThree";
}
Run Code Online (Sandbox Code Playgroud)
...以及试图检索值的代码:
Type myType = typeof(MyStaticClass);
PropertyInfo[] properties = myType.GetProperties(
BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly);
foreach (PropertyInfo property in properties)
{
MyComboBox.Items.Add(property.GetValue(myType, null).ToString());
}
Run Code Online (Sandbox Code Playgroud)
如果我不提供任何绑定标志,那么我得到大约57个属性,包括System.Reflection.Module模块和我不关心的各种其他继承的东西.我的3个声明的属性不存在.
如果我提供其他标志的各种组合,那么它总是返回0属性.大.
我的静态类是否真的在另一个非静态类中声明是否重要?
我究竟做错了什么?
我们有一个由Delphi CGI同步调用的C#WebMethod(不要问!).这种方法很好,除非我们切换到运行速度慢得多的灾难恢复环境.问题是Delphi WinInet Web请求的超时时间为30秒,由于Microsoft承认的错误而无法更改.在灾难恢复环境中,C#WebMethod可能需要30秒以上的时间,并且Delphi CGI的表面不尽相同.
我们现在编写了C#WebMethod来识别它所处的环境,如果它处于灾难恢复模式,那么我们在一个线程中调用后续方法并立即响应CGI,以便它在30秒内完成.这在理论上是有道理的,但我们发现这些线程调用是不稳定的,并且不会100%执行.我们获得了大约70%的成功率.
这显然是不可接受的,我们必须达到100%.使用Delegate.BeginInvoke()调用线程,我们已经在其他上下文中成功使用了它们,但是由于某种原因他们不喜欢这个...显然没有EndInvoke(),因为我们需要立即响应CGI,那是WebMethod的终结.
这是WebMethod的简化版本:
[WebMethod]
public string NewBusiness(string myParam)
{
if (InDisasterMode())
{
// Thread the standard method call
MethodDelegate myMethodDelegate = new MethodDelegate(ProcessNewBusiness);
myMethodDelegate.BeginInvoke(myParam, null, null);
// Return 'ok' to caller immediately
return 'ok';
}
else
{
// Call standard method synchronously to get result
return ProcessNewBusiness(myParam);
}
}
Run Code Online (Sandbox Code Playgroud)
是否有某种原因,如果在WebService WebMethod环境中使用这种"即发即忘"调用会失败?如果是,那么还有其他选择吗?
不幸的是,改变Delphi方面对我们来说不是一个选择 - 解决方案必须在C#方面.
您可以提供的任何帮助将非常感激.
我在Crystal Reports中遇到了多年来一直困扰我的问题,我想知道是否有人可能有解决方案.我在设计模式中有一些字段(数据字段和公式,数字和字符串)都在左边对齐.
当我移动到预览模式时,数字字段从不与其他字段对齐,并且它们稍微缩进,可能是一个字符.当您尝试创建专业的报告时,这看起来非常混乱.
任何想法如何让他们正确对齐?
可能的重复项:
加快不存在的网络共享的File.Exists的
速度。
我们需要将文本写入网络上的文件,但是可能存在该位置不存在的情况,而我们需要写入另一个位置。您如何快速检查网络位置是否存在?尝试使用“ try ... except”将文本写入不存在的位置需要花费30秒钟。当然必须有一个更快的方法吗?
如果有人可以给我一些指示,我将不胜感激。
谢谢!
我在Crystal Report中有一个我要压制的部分.如果我正在使用的数据集中的特定表中有0行,我需要禁止它.我该怎么做?提供的记录编号专用字段似乎是报告中的内部记录计数,与基础数据表中的行无关.
我正在使用C#创建报告,但我无法抑制代码中的部分(它不适合项目结构) - 我必须能够从报告本身中完成.有关的表肯定是传递给数据集中的报告,但它包含0行.必须有办法在报告中建立这个......
有谁能指出我正确的方向?
我有一个字符串用户设置,并希望在我的C#Windows应用程序启动期间选择具有相同名称的特定变量.
例如
我有一个名为UserSelectedInt的用户设置(字符串),当前设置为'MyTwo'.(请注意,我的变量实际上比整数更复杂,我只是用它们作为例子.)
public static int MyOne = 12345;
public static int MyTwo = 54321;
public static int MyThree = 33333;
public int myInt = SelectMyVariableUsing(MyApp.Settings.Default.UserSelectedInt)
Run Code Online (Sandbox Code Playgroud)
用户可能在上次关闭应用时选择了"MyTwo",因此这是我想在启动时选择的变量.我希望我有意义.
请有人告诉我如何实现这一目标?
谢谢
我有一个.NET Windows应用程序,需要调用另一个.NET可执行文件.我想将此其他exe作为主项目的一部分进行分发,并且想知道实现它的最佳方法是什么.我们不想从第二个exe中获取代码并将其放在主项目中,因为我们需要exe来有效地保持密封,因为我们还将它分发给第三方.
正在考虑的方案:
如果您有任何其他方法可以实现我的目标,我将非常感谢您对上述方法的一些指导.
谢谢!
c# ×4
.net ×2
alignment ×1
asynchronous ×1
class ×1
datarow ×1
datatable ×1
delegates ×1
delphi ×1
executable ×1
field ×1
file-io ×1
networking ×1
numbers ×1
properties ×1
reference ×1
reflection ×1
rowcount ×1
static ×1
web-services ×1