就像是:
using (IDisposable disposable = GetSomeDisposable())
{
//.....
//......
return Stg();
}
Run Code Online (Sandbox Code Playgroud)
我相信这不是回报声明的合适地方,是吗?
有人知道如何在Visual Studio 2010中设置winforms项目的起始形式吗?我已经转到Project Properties并更改了Startup Object,但是在dowpdownlist中,唯一可用的选项是"(None)"和"ProjectName.Program.cs"."program.cs"是我的默认代码文件.请帮我.(我在C#工作)
如在.NET Reflection中设想私有属性一样,可以使用私有setter设置属性.但是当在基类中定义属性时,抛出System.ArgumentException:"找不到属性集方法".
一个例子可以是:
using System;
class Test
{
public DateTime ModifiedOn { get; private set;}
}
class Derived : Test
{
}
static class Program
{
static void Main()
{
Derived p = new Derived ();
typeof(Derived).GetProperty("ModifiedOn").SetValue(
p, DateTime.Today, null);
Console.WriteLine(p.ModifiedOn);
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道解决这种情况的方法?
编辑:给出的示例是问题的简单说明.在现实世界的场景中,我不知道属性是在基类中定义的,还是在基类的基础中定义的.
我试图想出这样一个解决方案,用户将输入一个Web服务的URL,它将被测试.
虽然我想要的是URL更改,但我保证服务描述总是相同的(当然wsdl:service标签除了包含soap:地址); 我只是想测试不同的客户,运行相同的服务.
存在一个有向图(不一定连接),其中一个或多个节点被区分为源.可从任何一个源访问的任何节点都被视为"已点亮".现在假设其中一条边被移除.问题是确定先前已点亮且不再点亮的节点.
我认为可以考虑类似城市电力系统的类比.
我正在寻找最优化的方法来检测一个点是否在轴对齐的矩形内.
最简单的解决方案需要4个分支(if),这对性能不利.
在这种情况下,设置环境变量的应用程序在需要访问env.var的应用程序中执行.在main()的返回值(C#编程指南) MSDN文章讨论了一个批处理文件中使用.如果我尝试一样,一切都很好; 但是,不需要从批处理脚本运行,而是从应用程序内运行.
Process.Start("app","args"); // app sets the env.var.
string envVar = System.Environment.GetEnvironmentVariable("ERRORLEVEL");
Run Code Online (Sandbox Code Playgroud)
显然是不成功的.Process.Start使"app"在我认为完全不同的环境中工作.换句话说,我需要在与调用者应用程序相同的环境中运行"app",以便访问它设置的环境变量.
我一直在使用迭代器,我喜欢它们.
但是虽然我已经仔细考虑过,但我无法弄清楚"如何识别迭代器的编译器".我也研究过它,但找不到任何资源来解释编译器设计上下文中的情况.
详细说来,大多数关于迭代器的文章暗示存在某种实现所需行为的"魔法".他们建议编译器维护一个状态机,以便跟踪执行的位置(可以看到最后一次'yield return').我对迭代器的这个属性特别感兴趣,可以进行惰性求值.
顺便说一句,我知道什么是状态机,已经采用了编译器设计课程,研究过龙书.但显然,我无法将我所研究的内容与csc的"魔法"联系起来.
任何知识或差异的想法都表示赞赏.
我通过COM在Delphi 6中使用.Net2.0程序集.其中一个接口中的一个方法返回IEnumerable.只要我导入位于的mscorlib.tlb
"C:\ WINDOWS\Microsoft.NET \框架\ V2.0.50727"
,我可以在Delphi 6中同时访问IEnumerable和IEnumerator接口.以下是在mscorlib_TLB.pas中定义IEnumerable的部分:
// *********************************************************************//
// Interface: IEnumerable
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {496B0ABE-CDEE-11D3-88E8-00902754C43A}
// *********************************************************************//
IEnumerable = interface(IDispatch)
['{496B0ABE-CDEE-11D3-88E8-00902754C43A}']
function GetEnumerator: IEnumVARIANT; safecall;
end;
Run Code Online (Sandbox Code Playgroud)
GetEnumerator方法的返回值不是IEnumerator,当我尝试将其强制转换为IEnumerator时,"不支持接口"会抛出异常.
以前有人遇到过这个或类似的问题吗?怎么解决?
c# ×5
algorithm ×2
.net-2.0 ×1
.net-3.5 ×1
2d ×1
asmx ×1
c ×1
com ×1
delphi ×1
dispose ×1
environment ×1
graph-theory ×1
idisposable ×1
ienumerable ×1
iterator ×1
propertyinfo ×1
winforms ×1