小编Ben*_*jol的帖子

为什么Visual Studio不希望我为我的WPF项目添加新窗口?

也许是一个愚蠢的问题,但是当我将项目添加到WPF项目时,Visual Studio只提供UserControl,而不是Window.这是试图鼓励我做MVVM,我的设置是否被打破,还是有其他原因我没有想到?

wpf window visual-studio-2008

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

无法将类型'System.Enum'转换为int

(好吧,我会在这里揭露我无知的深处,请温柔)

背景

我有一个看起来像这样的方法:

public void AddLink(Enum enumVal)
{
     string identifier = m_EnumInterpreter(enumVal);
     AddLink(identifier);
}
Run Code Online (Sandbox Code Playgroud)

EnumInterpreter是一个Func <Enum,string>,它在创建父类时传入.

我正在使用Enum,因为在这个级别上它"不关我的事" - 我不关心它是哪个具体的枚举.调用代码只使用(生成的)枚举来避免魔术字符串.

如果EnumInterpreter发回一个空字符串,我想抛出一个带有enumVal实际值的异常.我以为我只能转换为int,但编译器不会拥有它.我究竟做错了什么?(请不要说'一切').

.net c# enums casting

25
推荐指数
2
解决办法
3万
查看次数

在C#中构建大型winforms应用程序的项目和依赖项

更新:
这是我最常访问的问题之一,但我仍然没有找到一个令人满意的解决方案.我在回答另一个问题时读到的一个想法是创建一个工具,可以为您从列表中选择的项目"动态"构建解决方案.我还没试过.


你如何构建一个非常大的应用程序?

  • 一个大解决方案中的多个小型项目/组件?
  • 一些大项目?
  • 每个项目一个解决方案

在没有一个解决方案的情况下,如何管理依赖关系.注意:我正在寻找基于经验的建议,而不是您在Google上找到的答案(我可以自己做).

我目前正在开发一个应用程序,它有80个dll,每个都在自己的解决方案中.管理依赖项几乎是一项全职工作.有一个自定义的内部"源代码控制",增加了复制依赖dll的功能.对我来说似乎是次优解决方案,但有更好的方法吗?我担心,在实践中制定一个包含80个项目的解决方案将非常粗糙.

(上下文:winforms,而不是web)

编辑:( 如果您认为这是一个不同的问题,请给我留言)

在我看来,之间存在相互依存关系:

  • 应用程序的项目/解决方案结构
  • 文件夹/文件结构
  • 源代码控制的分支结构(如果使用分支)

但是如果可能的话,我很难将它们分开来单独考虑它们.

在这里问过另一个相关的问题.

architecture projects-and-solutions visual-studio winforms

24
推荐指数
2
解决办法
5516
查看次数

C#中的管道转发

继续在C#中表达F#想法的调查,我想要一个管道前进算子.对于包含在IEnumerable中的任何东西,我们已经拥有它,因为你可以.NextFunc()到你心中的内容.但是,例如,如果最后有任何类似折叠的缩减,则无法将其结果输入函数.

这里有两种扩展方法,我想知道是否有其他人试过这个,如果这是个好主意(编辑:现在有了Earwicker的可能包括在内):

public static void Pipe<T>(this T val, Action<T> action) where T : class
{ if (val!=null) action(val); }

public static R Pipe<T, R>(this T val, Func<T, R> func) where T : class where R : class
{ return val!=null?func(val):null; }
Run Code Online (Sandbox Code Playgroud)

然后你可以写下这样的东西:

Func<string, string[]> readlines = (f) => File.ReadAllLines(f);
Action<string, string> writefile = (f, s) => File.WriteAllText(f, s);

Action<string, string> RemoveLinesContaining = (file, text) =>
    {
        file.Pipe(readlines)
            .Filter(s => !s.Contains(text))
            .Fold((val, sb) => sb.AppendLine(val), …
Run Code Online (Sandbox Code Playgroud)

c# f# functional-programming

24
推荐指数
2
解决办法
7926
查看次数

LINQ:如何声明IEnumerable [AnonymousType]?

这是我的功能:

    private IEnumerable<string> SeachItem(int[] ItemIds)
    {
        using (var reader = File.OpenText(Application.StartupPath + @"\temp\A_A.tmp"))
        {
            var myLine = from line in ReadLines(reader)
                         where line.Length > 1
                         let id = int.Parse(line.Split('\t')[1])
                         where ItemIds.Contains(id)
                         let m = Regex.Match(line, @"^\d+\t(\d+)\t.+?\t(item\\[^\t]+\.ddj)")
                         where m.Success == true
                         select new { Text = line, ItemId = id, Path = m.Groups[2].Value };
            return myLine;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我得到一个编译错误,因为"myLine"不是IEnumerable [string]而且我不知道怎么写IEnumerable [匿名]

"无法将类型'System.Collections.Generic.IEnumerable [AnonymousType#1]'隐式转换为'System.Collections.Generic.IEnumerable [string]'"

.net c# linq

24
推荐指数
4
解决办法
5万
查看次数

PhoneGap上的SQLite数据库

我想使用PhoneGap为iPhone实现SQLite数据库.我知道iPhone本机应用程序中的一些基础SQLite数据库.但是如何在PhoneGap中实现SQLite数据库呢?

sqlite iphone cordova

23
推荐指数
3
解决办法
5万
查看次数

"X"类型的对象无法转换为"X"类型的对象

(不敢相信这还没有被问过,但是我找不到复制品)

在包含大量项目的Visual Studio中,当我第一次打开解决方案时,我有时会收到警告Object of type "X" cannot be converted to object of type "X".一般来说,重建似乎会让它消失,但有谁知道这是由什么引起的,以及如何避免它?

更新我在某处读到删除所有resx文件并重建可以提供帮助.我不假思索地试过这个.不是个好主意......

c# visual-studio winforms

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

使用Roslyn解析/转换/生成代码:我的目标是太高还是太低?

(我要做的是通过从vs生成的设置文件生成接口和包装类来解决Application.Settings/MVVM问题.)

我想做的是:

  • 从文件中解析类声明
  • 仅基于类的(非静态)属性生成接口声明
  • 生成一个实现此接口的包装类,在构造函数中获取原始类的实例,并将所有属性"管道"到实例.
  • 生成另一个直接实现接口的类.

我的问题是双重的:

  • 我吠叫错了树吗?我会更好地使用Code-Dom,T4,Regex(!)来实现这个目标,还是部分原因?(我不介意一些额外的工作,因为这主要是一种学习经历.)
  • 如果罗斯林是要走的路,我应该关注哪一点?我有点天真地希望有一些方法可以走树并吐出我想要的东西,但是我无法理解是否/如何使用SyntaxRewriter来实现它,或者是否要使用流畅的结构,多次查询源我需要的位.

如果你想评论MVVM方面,你可以,但这不是问题的主旨:)

c# code-generation roslyn

22
推荐指数
4
解决办法
9424
查看次数

在HTML5中从画布中删除图像

有一个例子,加载2张图片:

    canvas = document.getElementById("canvas");
    ctx = canvas.getContext("2d");

    var img1 = new Image();
    img.src = "/path/to/image/img1.png";
    img.onload = function() {
      ctx.drawImage(img, 0, 0);
    };

    var img2 = new Image();
    img2.src = "/path/to/image/img2.png";
    img2.onload = function() {
      ctx.drawImage(img2, 100, 100);
    };
Run Code Online (Sandbox Code Playgroud)

我需要从画布中删除(替换)img2.什么是最好的做呢?

javascript html5 canvas

21
推荐指数
3
解决办法
5万
查看次数

如何确定给定的驱动器号是本地,映射还是USB驱动器?

鉴于驱动器的字母,我如何确定它是什么类型的驱动器?

例如,E:\是USB驱动器,网络驱动器还是本地硬盘驱动器.

.net c# usb path

20
推荐指数
3
解决办法
2万
查看次数