我有一个构建器类,它从大多数方法返回以允许菊花链.为了使这个工作与子类,我希望父方法返回子的实例,以便子方法可用于链到最后.
public class BaseBuilder<T extends BaseBuilder<T>> {
public T buildSomething() {
doSomeWork();
/* OPTION #1: */ return this; // "Type mismatch: cannot convert from BaseBuilder<T> to T"
/* OPTION #2: */ return T.this; // "Type mismatch: cannot convert from BaseBuilder<T> to T"
/* OPTION #3: */ return (T) this; // "Type safety: Unchecked cast from SqlBuilder<T> to T"
}
}
public class ChildBuilder extends BaseBuilder<ChildBuilder> {}
Run Code Online (Sandbox Code Playgroud)
选项#1和#2导致编译错误,选项#3导致警告(尽管可以抑制@SuppressWarnings("unchecked")).这里有更好的方法吗?我怎样才能安全地将Basebuilder投降给Childbuilder?
好吧,我对动态创建的控件的ID感到很困惑.
Public Class TestClass
Inherits Panel
Implements INamingContainer
Function TestClassInit() Handles Me.Init
Dim pnlMainPanel As New Panel
Me.Controls.Add(pnlMainPanel)
Dim pnlTest1 As New Panel
pnlMainPanel.Controls.Add(pnlTest1)
pnlTest1.ClientIDMode = UI.ClientIDMode.Inherit ' DEFAULT
'pnlTest1.ID = "ctl01"
'pnlTest1.UniqueID = "ctl00$MainPanel$ctl01"
'pnlTest1.ClientID = "MainPanel_ctl01"
'pnlTest1.UniqueClientID = "ctl00_MainPanel_ctl01"
'pnlTest1.StaticClientID = ""
pnlTest1.ClientIDMode = UI.ClientIDMode.Predictable
'pnlTest1.ClientID = "MainPanel_ctl01" (no change)
pnlTest1.ClientIDMode = UI.ClientIDMode.AutoID
'pnlTest1.ClientID = "ctl00_MainPanel_ctl01"
pnlTest1.ClientIDMode = UI.ClientIDMode.Static
'pnlTest1.ClientID = ""
End Function
End Class
Run Code Online (Sandbox Code Playgroud)
为什么5个不同的ID?
什么时候应该使用不同的ID模式?
(我阅读了MSDN文档,但它们像往常一样,并不是特别有启发性.)
如果我不在乎ID是什么,只想添加一个控件并将其ID提供给动态添加的AJAX扩展器,我应该使用哪种模式/ ID组合?
IsNot Nothing 很常见,但这是一个双重否定= o
我想Exists改用.有没有我可以在我的VB词汇中添加关键字?
现在,我写了一个扩展,_Exists()作为属性添加到每个对象.我经常使用它,但我仍然更喜欢实际的关键字.
<HideModuleName()>
Public Module CustomExtensions
''' <summary>
''' Returns <c>True</c> if [object] is not <c>Nothing</c>; otherwise <c>False</c>.
''' </summary>
<System.Runtime.CompilerServices.Extension()>
Public Function _Exists(obj As Object) As Boolean
Return obj IsNot Nothing
End Function
End Module
Run Code Online (Sandbox Code Playgroud)
我独家使用Visual Studio 2010,所以如果我可以欺骗VS将我的自定义短语转换为标准语法,那对我有用.
谢谢!
在.aspx页面上,将服务器控件的属性链接到页面类的属性(其代码隐藏)的最佳方法是什么?我读过的唯一方法是使用数据绑定:
<asp:TextBox ID="txt" runat="server" Text='<%# Me.SomePropOfMine %>' />
Run Code Online (Sandbox Code Playgroud)
然后从Me.txt.DataBind()或Me.Databind()从后面的代码中调用。是否有任何方法可以单独在.aspx页上建立这种关系,或者如果您有许多要绑定的控件(不绑定整个页),则可以简化该过程吗?
我有一个叫做UserContext跟踪我网站上给定用户活动的课程.它应该是一个单例类(每个用户只有一个实例).在Windows窗体应用程序中,我可以写这样的东西:
Class UserContext
Public Shared Current As New UserContext()
Private Sub New(appName As String)
[...]
End Class
Run Code Online (Sandbox Code Playgroud)
但是在ASP.net应用程序上,这将在所有当前用户之间共享.
如果这个类只在一个Page实体中使用,我可以将UserContext实例存储在一个Page变量中 - 它不一定需要在回发中存活.但是其他实体(不了解Page)也调用UserContext,我希望它们都被赋予相同的实例.
我该怎么做才能确保每个http请求(或每个用户)只对一个类进行一次实例化? 我可以使用缓存吗?
Public Shared Function GetContext() As UserContext
If HttpContext.Current.Cache("CurrentUserContext") Is Nothing Then HttpContext.Current.Cache("CurrentUserContext") = New UserContext()
Return HttpContext.Current.Cache("CurrentUserContext")
End Function
Run Code Online (Sandbox Code Playgroud)
可能会议状态是更好的选择吗?
缓存和会话状态都存在回发 - 是否有另一个选项随每个新请求重置?
谢谢你的帮助!
dim val1 As Integer? = If(5 > 2, Nothing, 43)
' val1 = 0
dim val1 As Integer? = If(5 > 2, Nothing, Nothing)
' val1 = Nothing
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?这是一个错误,还是我忽略了什么?
我有一个带有“只读”函数的类,该类不应序列化为 JSON 对象。因为函数的名字以“get”开头,Jackson 抓住了它,并且似乎不尊重附加的@JsonIgnore标签:
import org.codehaus.jackson.annotate.JsonIgnore;
public class MyClass {
publicMyClass() {}
@JsonIgnore
public String getSomeValue() {return "";}
}
Run Code Online (Sandbox Code Playgroud)
我还尝试使用以下语法:
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
@JsonIgnoreProperties({"someValue"})
public class MyClass {
publicMyClass() {}
public String getSomeValue() {return "";}
}
Run Code Online (Sandbox Code Playgroud)
在任何一种情况下,生成的 JSON 输出都是相同的:
{someValue:""}
Run Code Online (Sandbox Code Playgroud)
(我们在 Spring MVC 中使用 Jackson 1.9.13。)
除了重命名函数以从“get”以外的东西开始,我还能做些什么来防止杰克逊序列化这个函数的输出?
vb.net ×4
asp.net ×3
java ×2
.net ×1
ajax ×1
casting ×1
code-behind ×1
dom ×1
generics ×1
inheritance ×1
jackson ×1
javascript ×1
keyword ×1
nullable ×1
session ×1
singleton ×1
spring ×1
spring-mvc ×1
types ×1