Obter valor do tipo anônimo
Tenho um método da seguinte maneira:
public void MyMethod(object obj){
// implement
}
E eu chamo assim:
MyMethod(new { myparam= "waoww"});
Então, como posso implementarMyMethod()
para obter o valor myparam?
Edita
Eu uso isso
dynamic d= obj;
string param = d.myparam;
mas o erro aumenta:
'object' does not contain a definition for 'myparam'
também uso ponto de interrupção e vejo d ter propriedade de string mypara
E existe alguma maneira de verificar o tipo dinâmico se contiver alguma propriedade como esta:
if(d.contain(myparam))?
Edit II
Este é o meu código principal:
public static MvcHtmlString SecureActionLink(this HtmlHelper htmlHelper,
string linkText, string actionName, string controllerName,
object routeValues, object htmlAttributes) {
string areaName =
(string)htmlHelper.ViewContext.RouteData.DataTokens["area"];
dynamic areaObject = routeValues;
if(areaObject != null && !string.IsNullOrEmpty(areaObject.area))
areaName = areaObject.area;
// more
}
e chame-o como:
<p>@Html.SecureActionLink("Secure Link between Areas", "Index", "Context",
new { area = "Settings" }, null)</p>
E o erro é:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'object' does not contain a
definition for 'area'
Line 303: dynamic areaObject = routeValues;
Line 304:
Line 305: if(areaObject != null && !string.IsNullOrEmpty(areaObject.area))
Line 306: areaName = areaObject.area;
Line 307:
Source File: D:\Projects\MyProject\HtmlHelpers\LinkExtensions.cs Line: 305
Edit III
Esta é minha AssemblyInfo da definição de HtmlHelper:
[assembly: AssemblyTitle("MyProject.Presentation")]
[assembly: InternalsVisibleTo("cpanel.MyProject.dev")]
mas ainda existe um erro:'object' does not contain a definition for 'area'
Uso montagens diferentes, mas como é possível? Quando uso o ponto de interrupção, vejo que minha dinâmicaareaobject
terarea
name property e também posso ver o valor disso, mas o erro diz:'object' does not contain a definition for 'area'
Não consigo entender como isso é possível?
Edita
Altero a montagem e agora o tipo dinâmico é interno, mas o erro permanece como antes