也许是一个愚蠢的问题,但是当我将项目添加到WPF项目时,Visual Studio只提供UserControl,而不是Window.这是试图鼓励我做MVVM,我的设置是否被打破,还是有其他原因我没有想到?
(好吧,我会在这里揭露我无知的深处,请温柔)
背景
我有一个看起来像这样的方法:
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,但编译器不会拥有它.我究竟做错了什么?(请不要说'一切').
更新:
这是我最常访问的问题之一,但我仍然没有找到一个令人满意的解决方案.我在回答另一个问题时读到的一个想法是创建一个工具,可以为您从列表中选择的项目"动态"构建解决方案.我还没试过.
你如何构建一个非常大的应用程序?
在没有一个解决方案的情况下,如何管理依赖关系.注意:我正在寻找基于经验的建议,而不是您在Google上找到的答案(我可以自己做).
我目前正在开发一个应用程序,它有80个dll,每个都在自己的解决方案中.管理依赖项几乎是一项全职工作.有一个自定义的内部"源代码控制",增加了复制依赖dll的功能.对我来说似乎是次优解决方案,但有更好的方法吗?我担心,在实践中制定一个包含80个项目的解决方案将非常粗糙.
(上下文:winforms,而不是web)
编辑:( 如果您认为这是一个不同的问题,请给我留言)
在我看来,之间存在相互依存关系:
但是如果可能的话,我很难将它们分开来单独考虑它们.
我在这里问过另一个相关的问题.
继续我在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) 这是我的功能:
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]'"
我想使用PhoneGap为iPhone实现SQLite数据库.我知道iPhone本机应用程序中的一些基础SQLite数据库.但是如何在PhoneGap中实现SQLite数据库呢?
(不敢相信这还没有被问过,但是我找不到复制品)
在包含大量项目的Visual Studio中,当我第一次打开解决方案时,我有时会收到警告Object of type "X" cannot be converted to object of type "X".一般来说,重建似乎会让它消失,但有谁知道这是由什么引起的,以及如何避免它?
更新我在某处读到删除所有resx文件并重建可以提供帮助.我不假思索地试过这个.不是个好主意......
(我要做的是通过从vs生成的设置文件生成接口和包装类来解决Application.Settings/MVVM问题.)
我想做的是:
我的问题是双重的:
如果你想评论MVVM方面,你可以,但这不是问题的主旨:)
有一个例子,加载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.什么是最好的做呢?
鉴于驱动器的字母,我如何确定它是什么类型的驱动器?
例如,E:\是USB驱动器,网络驱动器还是本地硬盘驱动器.