질문에 올바르게 질문했는지 확실하지 않습니다. 내가 틀렸다면 나를 바로 잡아주세요.C#에서 참조로 속성을 전달하는 방법?
어쨌든 우리는 페이지 수명주기의 다른 단계에서 변수 값을 사용하고자합니다. 그래서 예를 들어
,
public partial class TestUserControl: UserControl{
public TestUserControl(){
Objects = new List<object>(){
Property1,
Property2,
Property3
};
}
public int Property1 { get; set; }
public bool Property2 { get; set; }
public string Property3 { get; set; }
public List<object> Objects { get; set; }
protected override OnLoad(EventArgs e){
foreach(var item in Objects){
Page.Controls.Add(new LiteralControl(item.ToString() + "<br/>"));
}
}
}
그래서 우리는 그들이 태그에 기록 된대로 속성 1, Property2, Property3의 값이 설정되어 말한다면, 어떻게 우리가 필요로 할 때 같은 속성 '값을 사용할 수 있을까?
생성자에서 속성 값 대신 목록에 나열된 속성 이름 만 나열되어 현재 값이 OnLoad에 사용됩니다.
고마워요.
편집 : 나는 deerchao 년대와 존의 접근 방식을 채택했지만, 그것은 같은입니다 ... 우리가 직면 할 또 다른 문제가있는 것 같다
public partial class TestUserControl: UserControl{
public TestUserControl(){
Objects = List<Func<object>>{
() => Property1,
() => Property2,
() => Property3
};
}
public int Property1 { get; set; }
public bool Property2 { get; set; }
public string Property3 { get; set; }
public List<Func<object>> Objects { get; set; }
protected override OnLoad(EventArgs e){
foreach (var item in Objects) {
//Here is the problem... can we get the variable name using this approach?
//We have tried some other ways like reflection and expressions but to no avail. Help please =)
string key = GetVariableName(item());
string value = item() == null ? string.Empty : item().ToString();
Page.Controls.Add(new LiteralControl(key + " : " + value + "<br/>"));
}
}
}
나는이 세 번 읽었는데, 나는 아직도 네가하려는 것을 이해하지 못하고, 지나가는 것과 관련이 있는지도 모른다. – jason
제이슨, 나는 참고 사항이 부주의 한 재현이라고 생각합니다. 어쩌면 내가 잘못 읽었지만, Jronny가 item.ToString()의 결과에 만족하지 않는 것처럼 들립니다. 하지만 제발 마음에 두십시오. – peacedog
저는 질문의 제목을 그가 묻고있는 것으로 바꿨습니다. 그것이 틀린 경우 다시 변경하십시오. – dtb