它是可能的初始化控制的名单<T> 酒店的标记?
-
21-08-2019 - |
题
让我们说,我们有以下几种:
public enum RenderBehaviors
{
A,
B,
C,
}
public class MyControl : Control
{
public List<RenderBehaviors> Behaviors { get; set; }
protected override void Render(HtmlTextWriter writer)
{
// output different markup based on behaviors that are set
}
}
它是可能的初始化财产的行为在ASPX/ASCX标记?即:
<ns:MyControl runat="server" ID="ctl1" Behaviors="A,B,C" />
子类不是一个选项,在这种情况下,(实际意图的行为略有不同,这个例子)。Web表单产生的分析错误,当我试试来初始化财产以这种方式。同样的问题可适用于其他单种类型(int,strings)。
解决方案
后研究这一步,我发现web表单不会使用。如果能找到它。的类型或财产需要被装饰正确,详细说明在这 相关的问题.
我伤了实现类似的东西:
public class MyControl : Control
{
private readonly HashSet<RenderBehaviors> coll = new HashSet<RenderBehaviors>();
public IEnumerable<RenderBehaviors> Behaviors { get { return coll; } }
public string BehaviorsList
{
get { return string.Join(',', coll.Select(b => b.ToString()).ToArray()); }
set
{
coll.Clear();
foreach (var b in value.Split(',')
.Select(s => (RenderBehvaior)Enum.Parse(typeof(RenderBehavior), s)))
{
coll.Add(b);
}
}
}
}
其他提示
您自己的串属性的建议使用标记工作时是唯一的解决办法。
不隶属于 StackOverflow