IDynamicObject를 둘러싼 블로그 게시물을 모두 기반으로 C# 4에서 method_missing을 구현하는 방법을 알아 내려고했습니다.C# 4에서 method_missing을 구현하고 실제로 값을 반환 할 수 있습니까?
내가하고 싶은 일은 리포지토리가있는 비즈니스 로직 레이어가 있고 비즈니스 로직 레이어에서 메서드가 누락 된 경우 리포지토리를 호출하고 그 결과를 전달하는 것입니다.
RepositoryMetaObect에서public class CustomerServices : IDynamicObject
{
protected CustomerRepository _Repository = new CustomerRepository();
MetaObject IDynamicObject.GetMetaObject(Expression parameter)
{
return new RepositoryMetaObject<CustomerRepository>(_Repository, parameter);
}
}
내가 지금처럼 통화 메소드를 구현 : 그래서 나는이처럼 보이는 클래스가
public override MetaObject Call(CallAction action, MetaObject[] args)
{
typeof(T).GetMethod(action.Name).Invoke(_Repository, getParameterArray(args));
return this;
}
(RepositoryMetaObject 코드의 나머지 부분은 아마 재미 있지,하지만 난했습니다 여기에 포함 시켰습니다 : http://pastie.org/312842)
제가 생각하기에 문제는 Invoke의 결과로 결코 아무것도하지 않는다는 것입니다. MetaObject 자체를 반환하는 것입니다.
dynamic service = new CustomerServices();
var myCustomer = service.GetByID(1);
GetByID를 호출,하지만 난 myCustomer에 속성에 액세스하려고하면, 바로 달려 있습니다 :
는 지금은이 작업을 수행 할 때.
아무도 도와 줄 수 있습니까? 난 당신이 상수 표현으로 반환 된 값으로 새로운 metaobject를을 반환해야 생각 https://dl.getdropbox.com/u/277640/BusinessLogicLayer.zip
훌륭하게 표현하고 질문 할 수 있습니다. 답변을 위해 필요한 모든 정보가 나와 함께 나에게 큰 도움을줍니다. –