小编Dan*_*mov的帖子

以自动方式摆脱C#代码中的匈牙利符号?

我有一个使用的系统匈牙利大多数变量名,这基本上意味着我有很多大的代码库 objQueue的,objCommon的,dtDataSet的等等.

有没有办法转换他们中的大多数?特别是,我想摆脱obj那些完全没有意义的烦人的,让变量名称看似相似,代码完全不可读.

一个类似的问题,但它询问是否值得做替换.
像"保持原样"这样的答案对我没有任何用处,因为我肯定我需要这样做.

代码库非常大,我不想逐个重命名变量.我也不想运行查找和替换,因为我会得到错误的命中并进一步搞乱代码.

是否有任何自动化工具可以在Visual Studio中进行此类替换?还有一些针对Resharper的插件,不管怎样?

resharper hungarian-notation code-cleanup visual-studio

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

在C#中只编写等效于副作用自由编程的静态方法吗?

我有两个问题,源于观察到的C#静态方法的行为(我可能会误解):

第一:递归静态方法在某种意义上是通过静态方法在封面下实现的方式进行尾调用优化吗?

第二:使用静态方法编写整个应用程序并且没有超出局部范围的变量,它是否等同于函数式编程?我很想知道,因为我仍然没有把这个"没有副作用"的术语包围起来,我一直听说功能性编程.

编辑:让我提一下,我确实使用并理解为什么以及何时在正常的C#OO方法中使用静态方法,并且我确实理解尾部调用优化不会明确地对递归静态方法进行.也就是说,我理解尾部调用优化是尝试在每次传递时停止创建新的堆栈帧,并且我在几个点观察到在它的调用方法的框架内执行的似乎是一个静态方法,尽管我可能误解了我的观察.

.net c# static functional-programming

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

如果我使用ASP .NET MVC 3,我可以安全地从Visual Studio中删除ASP .NET MVC 2吗?

我试图加快我的计算机速度,除了这些有用的提示,我正在尝试删除所有不再使用的Visual Studio扩展和加载项.

我注意到我同时安装了ASP .NET MVC 2和3,我根本不使用版本2.

ASP .NET MVC 2和3并排安装

我可以安全地删除旧版本,还是MVC 3依赖于MVC 2?
我不想搞乱我的工作环境.

asp.net-mvc visual-studio asp.net-mvc-3 asp.net-mvc-2

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

有水平的UIRefreshControl吗?

您可以添加UIRefreshControlUICollectionView(或任何UIScrollView通过此事)将它添加到集合的子视图:

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
[self.collectionView addSubview:refreshControl];
Run Code Online (Sandbox Code Playgroud)

当集合视图布局具有时,这不起作用UICollectionViewScrollDirectionHorizontal.

我尝试重写layoutSubviews将刷新控制放在左侧,但它不会以这种方式跟踪滚动进度.我可以欺骗它使用水平布局吗?

objective-c uiscrollview uikit ios6 uirefreshcontrol

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

如何从终端在iOS模拟器中运行MonoTouch应用程序?

显然,您可以通过运行从终端启动模拟器中的iOS应用程序

/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\ Simulator.app/Contents/MacOS/iPhone\ Simulator -SimulateApplication path_to_your_app/YourFavouriteApp.app/YourFavouriteApp
Run Code Online (Sandbox Code Playgroud)

这不适用于MonoTouch应用程序 - 我得到一个黑色的模拟器屏幕.
如何从终端在Simulator中启动已编译的MonoTouch应用程序?

xamarin.ios ios-simulator xamarin

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

在pushState单页面应用程序中使用URL片段(#)作为模态视图

我们使用Backbone.Router的是仅限pushstate模式,因此我们所有的客户端路由都是无哈希的.
但是,我们在应用程序中实现模态视图时遇到了困难.

挑战如下:

  • 我们想要Back按钮来隐藏当前的模态视图(所以我们需要它有一个URL);
  • 我们希望转发再次显示它而不重绘整个应用程序;
  • 我们希望能够在任何现有路线上"而不仅仅在一个页面上"显示模态;
  • 我们希望能够创建立即显示特定模式的链接(例如登录模式视图).

换句话说,我们希望模态视图在历史中表示.

我们的第一次尝试是使用URL /login作为登录模式,并在route处理程序中专门处理它们.当我们打开时/otherpage,打开模态将导航到/login,并且,当模态关闭时,再次导航到/otherpage.

但是,这有一个非常大的问题:URL /login不会"知道"它应该绘制哪个视图,因此我们必须在按Back和Forward时重绘所有内容.

这实际上是有道理的:主屏幕上的登录模式应该具有与其他页面上的登录模式不同的URL.

我的第二个想法是,也许我们可以使用哈希来指示当前的模态视图:

/
/#login
/otherpage
/otherpage#login
Run Code Online (Sandbox Code Playgroud)

这使得路由处理程序变得简单:

  • 首先,根据匹配的路线绘制实际视图,就像我们之前做的那样.
  • 之后,如果存在哈希,则在顶部显示模态视图.

这也符合哈希是可见文档的"片段"的想法.(是的,应用程序不是文档,bla bla bla.我们仍然希望它们可以被寻址.)

这种方法有任何固有的问题吗?
有没有更好的方法来满足我们的条件?

javascript url-routing backbone.js pushstate single-page-application

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

为什么绝对定位的孩子会扩大容器高度以及如何防止这种情况?

假设您有一个父级 div,其中包含多个普通子级和一个绝对子级。

\n\n

我几乎到处 读到,孩子的position: absolute身高不会影响父母的身高,因为它不符合正常流程。然而就我而言,绝对元素扩展了父元素,我不明白为什么。

\n\n

(我尝试阅读规范,但我真的迷失了。)

\n\n

超文本标记语言

\n\n
<div class="container">\n  <div class="block"></div>\n  <div class="block"></div>\n  <div class="block"></div>\n  <div class="outsider"></div>\n</div>\n
Run Code Online (Sandbox Code Playgroud)\n\n

CSS

\n\n
.container {\n  overflow: hidden;\n}\n\n.block, .outsider {\n  width: 100%;\n  height: 1000px;\n}\n\n.block {\n  background: red;\n}\n\n.outsider {\n  position: absolute;\n  left: 0;\n  top: 3000px;\n  background: green;\n  opacity: 0.5;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

CSS 溢出

\n\n

为什么浏览器让我滚动超过元素的假定高度?它在 Chrome、Safari 和 Firefox 中似乎是一致的,所以我认为它是规范的一部分。

\n\n

我该如何防止这种行为?如果绝对定位的元素不适合 \xe2\x80\x9cdictated\xe2\x80\x9d 的容器高度 \xe2\x80\x9cnormal\xe2\x80\x9d 子元素,我希望将其裁剪。

\n\n

现场观看。

\n

css scroll css-position overflow absolute

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

Sqlite - Insert给出错误 - 无效的强制转换异常 - "从'DateTime'到'Int32'的无效强制转换."

var idParam = new SQLiteParameter("@idParam", SqlDbType.Text) { Value = insertData.ID };
var userIdParam = new SQLiteParameter("@userIdParam", SqlDbType.VarChar) { Value = insertData.Uid };
var applicationNameParam = new SQLiteParameter("@applicationNameParam", SqlDbType.VarChar) { Value = insertData.Application };
var eventNameParam = new SQLiteParameter("@eventNameParam", SqlDbType.VarChar) { Value = insertData.EventName };
var clientTokenParam = new SQLiteParameter("@clientTokenParam", SqlDbType.VarChar) { Value = insertData.ClientToken };
var versionParam = new SQLiteParameter("@versionParam", SqlDbType.VarChar) { Value = insertData.Version };
var dateTimeParam = new SQLiteParameter("@dateTimeParam", SqlDbType.DateTime) { Value = insertData.DateTime };
var dataParam = …
Run Code Online (Sandbox Code Playgroud)

c# sqlite ado.net

5
推荐指数
0
解决办法
3953
查看次数

是否在Python中动态添加属性?

在Python中,您可以从定义类外部分配任意属性:

class Profile(models.Model):
    user = models.OneToOneField(User)  
    name = models.CharField(max_length=140)

p = Profile()
p.age = 42
Run Code Online (Sandbox Code Playgroud)

这里的基础机制是__dict__维护所有属性的字典的属性.

我们都被告知不要将我们的内部工作暴露给客户端代码,但是附加数据根本不与封装有关,对吧?这个习惯用法是Python代码常见的吗?


就是我的意思......

每一个Tweet有标准领域,如id,text,owner.
当为用户返回推文列表时,您希望显示此用户是否"赞成"推文.

显然,为了获得is_favorite你需要为此查询多对多关系user.
可以预先填充Tweetis_favorite当前用户相对应的对象吗?

当然我可以公开一个方法,is_favorite_for(user)但我遇到Django模板语言限制,不允许从模板内部调用带有参数的方法.另外,我认为模板根本不应该调用方法.


我知道这样可以正常工作,但我想知道在开源项目中做这样的事情是否会让其他开发人员蔑视我.

边注:

我来自C#/ .NET背景,其中最近引入了动态类型,除了一些利基领域(互操作性,IoC框架,REST客户端框架等)之外,它们没有得到广泛的适应.

python oop encapsulation dynamic-languages design-principles

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

如何修复由lambda事件处理程序引起的GC循环?

通过Mark Probst和Rodrigo Kumpera 观察高级内存管理,我学习了新的技术,例如分析Mono GC和使用WeakReference.

然而,我仍然不明白如何从第28分钟"修复"拼图2:

public class CustomButton : UIButton {
    public CustomButton () { }
}

public class Puzzle2Controller : UIViewController
{
    public override void ViewDidLoad ()
    {
        var button = new CustomButton ();
        View.Add (button);
        button.TouchUpInside += (sender, e) =>
            this.RemoveFromParentViewController ();
    }
}
Run Code Online (Sandbox Code Playgroud)

控制器保存一个ref to按钮,该按钮保存一个ref事件处理程序,该处理程序将ref保存到控制器.

打破循环的一种方法是使按钮无效.另一种方法是分离处理程序(但我们必须抛弃使用lamdas).

是否有其他/更优雅/方式来打破这个循环?我们能以某种方式坚持WeakReference到这里吗?

谢谢.

编辑:在这种情况下,按钮甚至不是一个字段.但是还有一个周期,不是吗?它位于Controller的View的子视图中.我们必须清除它们吗?我糊涂了.

c# mono garbage-collection xamarin.ios xamarin

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