그것은 같은
class A
{
public Action Action { get; set; }
}
우리는 우리가 캐스팅이 너무
void Main()
{
var a = new A();
var type = a.GetType();
var delegateProperty = type.GetProperty(nameof(A.Action));
delegateProperty.SetValue(a, (Action)(() => Console.WriteLine("via reflection")));
a.Action();
}
주처럼 반사를 통해 설정할 수있는 위임 속성 클래스 감안할 때
오히려 간단합니다 람다 식을 델리게이트 형식으로 변환하려면 여기 System.Action
형식 유추 컨텍스트가 없기 때문에 중요하지는 않지만 va를 얻는 여러 가지 방법 중 하나 일뿐입니다 델리게이트 유형의 lue.
어떻게 위임 속성 유형의 변수를 선언하고 반사를 사용하여 를 초기화 : 그러나 질문의 두 번째 부분에 우리를 인도 않습니다
?
선언 된 속성과 일치하는 형식의 대리자 값을 만들어야합니다. 이 경우 속성은 System.Action
입니다. 대리자가 포함되어있는 경우
var type = typeof(MyClass);
var action = new Action<object>((o) => Console.WriteLine("Invoked with {0}", o));
var obj = new MyClass();
type.GetProperty("Simple", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(obj, action);
: 속성을 설정
public class MyClass
{
internal Action<object> Simple { get; set; }
}
:이 클래스를 가정
: 가장 간단한 수준에서
* 이벤트 *를 설정/추가 하시겠습니까? 예 : 'Button.Click'? –