【发布时间】:2014-03-17 08:54:15
【问题描述】:
我在 Visual Studio 2013 中使用 .net v4.5 编写了这段代码。我遇到的问题是我现在不得不下拉到 .net v3.5 并且动态关键字由于缺少程序集引用而引发错误。 .net v3.5 中是否有与“动态”等效的类型,或者我可以通过何种方式获得与以下相同的结果?
我想我可能已经找到答案 here,但是当我添加 .Attributes 或 .Text 属性修改时 var 会抛出错误。
private void CreateControl<T>(string objText,
Panel pnl,
string HTMLTag = "<td>",
string applicantID = "",
EventHandler hndl = null)
{
pnl.Controls.Add(new LiteralControl(HTMLTag));
dynamic obj = Activator.CreateInstance(typeof(T));
obj.Text = objText;
if (applicantID != string.Empty)
{
obj.Attributes.Add("ApplicantID", applicantID);
}
if (hndl != null)
{
obj.Click += new EventHandler(hndl);
}
pnl.Controls.Add(obj);
pnl.Controls.Add(new LiteralControl(HTMLTag.Insert(1, "/")));
}
【问题讨论】:
-
没有。在 3.5 中没有
Dynamic关键字。你可以使用object。老实说,除非您将dynamic与interop结合使用,否则您的设计有问题` -
Object 关键字会导致同样的问题。告诉我“属性”|“文本”没有定义。进一步阐述可能会有所帮助?
-
它实例化的对象是否是动态的?如果您要将类型约束应用于某些
Control基类/接口,它似乎应该可以工作。 -
@48klocs 这可能是对 dynamic 关键字的误用,但我不知道哪个类型
来自泛型类。它可以是从 asp:textbox 到 tinymce:textarea 的任何东西。 -
你应该做的是从同一个界面派生你的控件并使用它而不是
T
标签: c# object dynamic controls