小编Jam*_*esW的帖子

C# - 从静态类中获取静态属性的值

我试图在一个简单的静态类中循环一些静态属性,以便用它们的值填充组合框,但是遇到了困难.

这是简单的类:

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属性.大.

我的静态类是否真的在另一个非静态类中声明是否重要?

我究竟做错了什么?

c# reflection static properties class

40
推荐指数
2
解决办法
4万
查看次数

C#Fire和Forget在WebMethod中调用

我们有一个由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#方面.

您可以提供的任何帮助将非常感激.

c# delegates asynchronous web-services

5
推荐指数
1
解决办法
3018
查看次数

如何在Crystal Reports 2008中正确对齐数字字段?

我在Crystal Reports中遇到了多年来一直困扰我的问题,我想知道是否有人可能有解决方案.我在设计模式中有一些字段(数据字段和公式,数字和字符串)都在左边对齐.

当我移动到预览模式时,数字字段从不与其他字段对齐,并且它们稍微缩进,可能是一个字符.当您尝试创建专业的报告时,这看起来非常混乱.

任何想法如何让他们正确对齐?

numbers field alignment crystal-reports

5
推荐指数
2
解决办法
8638
查看次数

如何使用Delphi 5快速检查网络位置是否存在?

可能的重复项:
加快不存在的网络共享的File.Exists的
速度。

我们需要将文本写入网络上的文件,但是可能存在该位置不存在的情况,而我们需要写入另一个位置。您如何快速检查网络位置是否存在?尝试使用“ try ... except”将文本写入不存在的位置需要花费30秒钟。当然必须有一个更快的方法吗?

如果有人可以给我一些指示,我将不胜感激。

谢谢!

delphi file-io networking

4
推荐指数
1
解决办法
8344
查看次数

如果数据表中没有行,则禁止"Crystal Reports"部分

我在Crystal Report中有一个我要压制的部分.如果我正在使用的数据集中的特定表中有0行,我需要禁止它.我该怎么做?提供的记录编号专用字段似乎是报告中的内部记录计数,与基础数据表中的行无关.

我正在使用C#创建报告,但我无法抑制代码中的部分(它不适合项目结构) - 我必须能够从报告本身中完成.有关的表肯定是传递给数据集中的报告,但它包含0行.必须有办法在报告中建立这个......

有谁能指出我正确的方向?

datatable datarow rowcount crystal-reports

3
推荐指数
1
解决办法
4万
查看次数

如何使用字符串选择C#变量

我有一个字符串用户设置,并希望在我的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 c#

2
推荐指数
1
解决办法
1226
查看次数

我应该如何调用与我的主应用程序一起分发的.NET exe

我有一个.NET Windows应用程序,需要调用另一个.NET可执行文件.我想将此其他exe作为主项目的一部分进行分发,并且想知道实现它的最佳方法是什么.我们不想从第二个exe中获取代码并将其放在主项目中,因为我们需要exe来有效地保持密封,因为我们还将它分发给第三方.

正在考虑的方案:

  1. 我应该将exe作为文件添加到项目中并将Copy to Output设置为'Always always'然后从主应用程序文件夹中运行它吗?
  2. 我应该在主项目中添加exe作为参考吗?如果我这样做,我怎么称它为带参数的可执行文件?

如果您有任何其他方法可以实现我的目标,我将非常感谢您对上述方法的一些指导.

谢谢!

.net c# executable reference visual-studio

1
推荐指数
1
解决办法
1042
查看次数