Pergunta

Em C # 4.0 nós estamos indo para obter tipos dinâmicos, ou objetos cujo "tipo estático é dinâmico", de acordo com Anders. Isso permitirá que qualquer resolução invocação de método para acontecer em tempo de execução em vez de tempo de compilação. Mas haverá facilidade para vincular o objeto dinâmico a algum tipo de contrato (e, assim, também obter intellisense total para ele de volta), em vez de permitir qualquer chamada sobre ele mesmo se você sabe que não é provável que seja válido.

i. em vez de apenas

dynamic foo = GetSomeDynamicObject();

tem a capacidade de elenco ou transformá-lo para restringi-lo a um contrato conhecidos, como

IFoo foo2 = foo.To<IFoo>;

ou mesmo apenas

IFoo foo2 = foo as IFoo;

Não foi possível encontrar nada parecido nos materiais existentes para C # 4.0, mas parece que uma extensão lógica do paradigma dinâmico. Qualquer pessoa com mais informações?

Foi útil?

Solução

Eu não estou ciente de qualquer coisa realmente se assemelha pato digitação, eu tenho medo. Eu tenho blog sobre a idéia , mas eu não espero qualquer apoio. Provavelmente não seria muito difícil de usar Reflection.Emit fazer uma classe que irá gerar uma implementação de qualquer interface dada, levando um objeto dinâmico no construtor e apenas proxy cada chamada para ele. Não é o ideal, mas pode ser um paliativo.

Outras dicas

Essa é uma idéia legal. Se eu entendi, você está descrevendo / propondo uma capacidade do CLR, pelo que, quando você tentar lançar um objeto dinâmico para uma interface, ele deve olhar para o que métodos / propriedades dos suportes de objetos dinâmicos e ver se ele tem os que efetivamente implementar essa interface. Em seguida, a CLR iria cuidar de 'IFoo execução' sobre o objeto, para que você possa, em seguida, converter o objeto dinâmico para um IFoo. Quase certo que isso não vai ser apoiado, mas é uma idéia interessante.

Tobias Hertkorn respondeu à minha pergunta aqui com um link à sua blogpost mostrando um exemplo de como usar o método Convert () no MetaObject para retornar um proxy dinâmico. Parece muito prometendo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top