我宣布这个类:
public class SimpleArea<T> where T: Control
{
private T control;
public SimpleArea(T control)
{
this.control = control;
}
}
在我的主程序中,我想做这样的事情:
var SimpleAreaPanel = SimpleArea<Panel>(p => { p.Height= 150; })
问题是他无法定义智能感知“参数??? p”的“p”类型
我如何完成此指示?
答案 0 :(得分:5)
您的构造函数不接受lambda - 它需要一个T
实例,所以Panel
。要么给一个Panel
,要么写一个可以接受该表达的constucor - 也许是Action<T>
。
就个人而言,我怀疑你的意思是:
new Panel {Height = 150}
是一个对象初始值设定项,而不是lambda - 即。
var SimpleAreaPanel = new SimpleArea<Panel>(
new Panel { Height= 150 });
答案 1 :(得分:3)
如果我理解正确,你根本不需要使用lambda。
var SimpleAreaPanel = new SimpleArea<Panel>(new Panel{Height = 150});
答案 2 :(得分:1)
你需要这样的东西:
class SimpleArea<T> where T : Control, new()
{
public T control;
public SimpleArea(Action<T> action)
{
control = new T();
action(control);
}
}
所以你可以写:
var SimpleAreaPanel = new SimpleArea<Panel>(p => { p.Height = 150; });
但我不知道该为...