在最近升级到Xamarin Studio 6和Mono 4.4.0.182(在OSX 10.10.5上运行)之后,我们发现我们的应用程序不再运行(Asp.NET MVC/Razor网站).然而,解决方案确实正确编译.
我们已经尝试恢复到之前的版本 - Xamarin Studio 5.10.3和Mono 4.3.2,我们的应用程序仍然无法正常运行.完全相同的应用程序在更新之前工作正常.
没有进行任何其他环境/代码更改,重新启动也无法正常工作.
更新后生成错误.
第一个错误(在应用程序启动时):System.Reflection.ReflectionTypeLoadException
这是由SimpleInjector Container.RegisterPackages()触发的.这在Xamarin/Mono更新之前有效,并且没有应用/制作代码更改/包更新.
Could not load type 'System.Net.HttpListener' from assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
Could not load type 'System.Net.HttpListenerPrefixCollection' from assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
Could not load type 'System.Net.HttpWebRequest' from assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
Could not load type 'System.Net.Security.SslStream' from assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
Could not load type 'System.Net.WebSockets.ClientWebSocket' from assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪
at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (System.Reflection.Assembly,bool) …Run Code Online (Sandbox Code Playgroud) 我有一个Textbox添加到.ascx控制页面如下:
<asp:TextBox id="txtDescription" runat="server" Width="500" TextMode="MultiLine" Rows="2"></asp:TextBox>
Run Code Online (Sandbox Code Playgroud)
并且它会在首次加载时显示类似的内容(包括开头的4个空格):
Description goes here
Run Code Online (Sandbox Code Playgroud)
简而言之,这是一个Multiline Textbox2行.但是,无论何时我们Postback对服务器执行操作,当页面重新加载时,我们都会得到:
Description goes here
Run Code Online (Sandbox Code Playgroud)
另一个Postback.
Description goes here
Run Code Online (Sandbox Code Playgroud)
等等.基本上,每次在a之后刷新页面时Postback,它会在文本框的开头添加4个空格.在某些页面上,这不是问题,但是,如果用户将Gridview一些数据输入到一个或其他一些数据中Control,那么Textbox最终可能会将20个左右的字符分流到右边,有时会超出界限的Textbox.
简而言之,这对我们公司来说是一个问题,因为它发生在我们所有的网页上.我们的一位客户多次通过"......你能在某些时候对文本框开头的空间做些什么吗?"
现在,我们使用的临时修复是我们PageLoad函数中的以下代码,但是,我们仍然在开头留下了4个空格Textbox.并且在100个.ascx和.aspx控件/页面中滚动它并不是真正的解决方案.
if (IsPostBack)
txtDescription.Text = txtDescription.Text;
Run Code Online (Sandbox Code Playgroud)
现在最大的问题是,有没有人知道如何删除这些神秘的4个空间,这些空间一直被添加到一个开头Multiline Textbox?
今天办公室里出现了关于使用它是否是 OOP 约定的讨论:
private string myField;
public string MyProperty {
get { return myField; }
}
public MyClass(string field) {
myField = field;
}
Run Code Online (Sandbox Code Playgroud)
对此:
public string MyProperty {
get;
private set;
}
public MyClass(string field) {
MyProperty = field;
}
Run Code Online (Sandbox Code Playgroud)
在领域驱动开发期间。
我们看过的许多 DDD 示例都使用上面的第一种方法来编写代码,但从来没有使用第二种方法。我知道我们办公室的几个人(包括我自己)出于各种原因个人偏好第二种方法,而其他人则更喜欢第一种方法,或者不关心使用哪种方法。
目前,我们的代码混合在两种不同的方法之间,一些类使用方法 #1,其他类使用方法#2,还有一些类使用两者的组合(一个属性可能具有公共 get/私有集,而另一个属性仅具有返回的公共 get)私人领域)。
基本上,我们想知道哪种方法最适合 DDD OOP 最佳实践,以及为什么我们需要进行代码春季清理,而整理域内部是列表中的项目之一。