Usando padrão dinâmico, talvez? Você pode chamar qualquer método / propriedade usando a palavra-chave dinâmica, certo? Como verificar se o método existe antes de chamar myDynamicObject.DoStuff (), por exemplo?
c#
.net
methods
reflection
properties
Louis Rhys
fonte
fonte
DynamicObject
?Respostas:
Você poderia escrever algo assim:
Editar: você pode até fazer um método de extensão e usá-lo assim
fonte
via Reflexão
Semelhante é para métodos
fonte
GetType()
existe um método comoGetProperties()
. Está retornando matriz dePropertyInfo
. Mas como posso usar oGetProperties()
método?É uma pergunta antiga, mas acabei de encontrar.
Type.GetMethod(string name)
lançará uma AmbiguousMatchException se houver mais de um método com esse nome, então é melhor lidarmos com esse casofonte
Não seria melhor não usar nenhum tipo dinâmico para isso e deixar sua classe implementar uma interface. Em seguida, você pode verificar em tempo de execução se um objeto implementa essa interface e, portanto, possui o método (ou propriedade) esperado.
Eu acho que essa é a única maneira correta.
Você está se referindo à digitação de pato, o que é útil em cenários em que você já sabe que o objeto tem o método, mas o compilador não pode verificar isso. Isso é útil em cenários de interoperabilidade COM, por exemplo. (consulte este artigo)
Se você deseja combinar digitação de patos com reflexão, por exemplo, acho que está perdendo o objetivo de digitar patos.
fonte