小编Via*_*ukh的帖子

为什么C#编译器使用无效方法的重载?

我对以下代码感到困惑

class A
{
    public void Abc(int q)
    {
        Console.Write("A");
    }
}

class B : A
{
    public void Abc(double p)
    {
        Console.Write("B");
    }
}

    ...
    var b = new B();
    b.Abc((int)1);
Run Code Online (Sandbox Code Playgroud)

代码执行的结果是写入控制台的"B".

实际上B类包含两个Abc方法的重载,第一个用于int参数,第二个用于double.为什么编译器对整数参数使用双版本?

小心方法abc(double)不会遮蔽或覆盖方法abc(int)

c# oop

34
推荐指数
3
解决办法
1726
查看次数

如何获取ASP.NET应用程序路径?

我拥有自己的siteMapProvider,我需要phisical文件路径来初始化它,但我不能使用HttpContext来做到这一点,因为IIS 7将抛出异常:

fileName = HttpContext.Current.Server.MapPath(fileName);
Run Code Online (Sandbox Code Playgroud)

如何在没有HttpContext的情况下执行MapPath?

c# asp.net-mvc

22
推荐指数
2
解决办法
7万
查看次数

IS运算符是否为unbox值类型?

我找不到以下问题的答案:

object o = 10; // Box
int i = (int)o; // Unbox
Run Code Online (Sandbox Code Playgroud)

很明显,但以下内容尚不清楚

bool isInt = o is int; // Is the unbox here or not?
Run Code Online (Sandbox Code Playgroud)

.net c#

13
推荐指数
2
解决办法
825
查看次数

如何通过文件名查找ProjectItem

我正在为Visual Studio开发一个自定义工具.该工具被分配给该文件,在文件更改时我收到该文件的名称,并应在项目中生成一些更改.我需要通过接收的文件名找到一个ProjectItem.我发现只有一个解决方案,它列举了解决方案的每个项目中的所有项目项.但它似乎是一个巨大的解决方案.有没有办法通过文件名获取项目项而不枚举?

这是我对IVsSingleFileGenerator的Generate方法的实现

public int Generate(string sourceFilePath, string sourceFileContent, string defaultNamespace, IntPtr[] outputFileContents, out uint output, IVsGeneratorProgress generateProgress)
{
    var dte = (EnvDTE.DTE)Package.GetGlobalService(typeof(EnvDTE.DTE));

    ProjectItem projectItem = null;

    foreach (Project project in dte.Solution.Projects)
    {
        foreach (ProjectItem item in project.ProjectItems)
        {
            var path = item.Properties.Item("FullPath").Value;
            if (sourceFilePath.Equals(path, StringComparison.OrdinalIgnoreCase))
            {
                projectItem = item;
            }
        }               
    }

    output = 0;
    outputFileContents[0] = IntPtr.Zero;

    return Microsoft.VisualStudio.VSConstants.S_OK;
}
Run Code Online (Sandbox Code Playgroud)

.net c# visual-studio envdte

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

Blend的资产列表为空

混合到Visual Studio 2012有一个空资产列表.而不是它显示sendwatch游标的项目.

我没有找到任何方法来修复或恢复它.

我试过谷歌但没有结果.

UP:它似乎与项目相关,因为所有工作都正常,而另一个项目正在编辑.

wpf blend visual-studio expression-blend visual-studio-2012

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

如何在没有背景音频播放器暂停的情况下重复单个声音?

我需要后台播放器在一个循环中播放单个曲目而在结束和开始之间没有暂停.我怎么能实现它?

我试图通过AudioPlayerAgent实现它,但是它无法删除短暂的暂停但留在这里.

windows-phone-7 windows-phone-7.1

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

如何在Windows 7下"安装"/"启用".Net 3.5 SP1?

我正在编写一个部署应用程序,它应该在加载主模块之前安装所有必需的组件.但我在Windows 7上安装dotnet 3.5 SP1时出现问题.Windows 7包含了dotnet 3.5 SP1,但有时候用户/制造商/用户禁用该组件...用户可以从控制面板启用它,但我不能请他这样做.如何从我的软件启用它,我应该从部署过程中排除所有手动配置.

.net c# deployment

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

为什么绑定的StringFormat没有使用当前的文化?

我目前的文化是ru-RU.我需要它将十进制格式化为货币字符串.

decimal n = 111.22M;

n.ToString("C") will return "111,22?."
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用绑定的StringFormat字段时,我得到一个"$ 111.22"的结果

<TextBlock Text={Binding Number, StringFormat=C} />
Run Code Online (Sandbox Code Playgroud)

c# xaml windows-phone-7

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

调用COM wituout COM interop dll

我正在开发需要发送桌面操作快捷方式的应用程序.我发现只有一种方法可以实现它:

var shell = new IWshRuntimeLibrary.WshShell();
var shortcut = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(linkFileName);
shortcut.TargetPath = Application.ExecutablePath;
shortcut.WorkingDirectory = Application.StartupPath;
shortcut.Save();
Run Code Online (Sandbox Code Playgroud)

它正在运行coreect,但需要Interop.IWshRuntimeLibrary.dll.我的应用程序需要通过一个小的exe文件进行部署,我不能将任何其他文件包含在包中.

在没有interop dll的情况下调用COM的方法是什么?

c# com

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

如何调试由协议关联启动的Windows Phone 8.1应用程序?

我的应用程序需要激活协议,我按照官方指南实施.

检查OnActivated上的激活种类,如果检测到协议,则初始化新的框架和窗口.

当应用程序启动并通过F5连接到调试器时,我看到一个主页面,下一个我按下后退按钮并单击以链接电子邮件.该应用程序正确启动并向我显示所需的页面.

但是如果我在点击链接之前通过进程管理器杀了应用程序,应用程序将显示启动画面并关闭.

所以我应该调试app来本地化bug,但是当应用程序被杀死时调试器会分离.

请帮我找一个调试方法!

c# windows-phone windows-runtime windows-8.1 windows-phone-8.1

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