가 내부적으로 면도기보기에서 다음Func을 매개 변수로 사용하여 사전 개체를 호출하는 방법?
public MyClass<T>
{
public Dictionary<String, Func<T,String>> AttributesUsing{ get; set;}
public void setAttributesUsing(Action<Dictionary<String, Func<T, String>>> t)
{
AttributesUsing = new Dictionary<String, Func<T, String>>();
t(AttributesUsing);
}
}
과 같은 이전의 개발자에 의해 개발, 우리는 그렇게
....
....
.setAttributesUsing(attr =>
{
attr.Add("width", item => (item.ActualDays * 19).ToString());
});
....
문제가있는 것처럼 구성 요소를 호출 할 수 있습니다 그가 끝내지 않은 백엔드 코드는 어떻게 호출할까요?
이
내가 너무m.AttributesUsing(item)
처럼 T 객체를 전달하려고하지만 분명히 그 아무 이동 없습니다
foreach(T item in DataSource)
{
MyClass<T> m = new MyClass<T>()
m.AttributesUsing(???????) <---- what do i pass in here?
}
관련이 다음과 같은 작품이다. Dictionary 객체이기 때문에 "메서드처럼 사용할 수 없게"됩니다. 조금 혼란스러워.
감사합니다.
당신은'사전 <문자열, Func을>을 제공하는'액션 를'제공'어디'T' 클래스의 초기화에 제공 한 어떤이다 : 'MyClass에 m = 새 MyClass()'는 컴파일시에'T'를 지정하지 않았기 때문에 컴파일되지 않을 것입니다. –
불행히도 "면도보기"라는 용어에 익숙하지 않습니다. 그러나 그 부분에 표시된 구문은 일반적인 C# 람다 함수처럼 보입니다. "??????"에 동일한 코드를 붙여 넣을 수는 없습니까? – Katana314
@Liming 만약 당신의'foreach'에있는'T'가 앞서 언급 한 타입의 사전이라면, 당신은 그것을 인수로 넘길 수 없습니다. 메소드는 델리게이트를 기대합니다. 람다를보십시오 :'m.AttributesUsing (item => item.Clear()); ' –