tengo un método como el siguiente:Obtener el valor de tipo anónimo
public void MyMethod(object obj){
// implement
}
Y llamarlo así:
MyMethod(new { myparam= "waoww"});
Entonces, ¿cómo puedo aplicar para obtener el valor MyMethod()
miparam?
Editar
Yo uso este:
dynamic d= obj;
string param = d.myparam;
pero el aumento de error:
'object' does not contain a definition for 'myparam'
También uso punto de interrupción y ver el D tienen miparam propiedad de cadena.
Y ¿hay alguna manera de comprobar tipo dinámico a si contiene ninguna propiedad como esta:
if(d.contain(myparam))?
Editar II
Este es mi 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
}
y llámelo como:
<p>@Html.SecureActionLink("Secure Link between Areas", "Index", "Context",
new { area = "Settings" }, null)</p>
y el error es:
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
Editar III
Ésta es mi AssemblyInfo de HtmlHelper definición:
[assembly: AssemblyTitle("MyProject.Presentation")]
[assembly: InternalsVisibleTo("cpanel.MyProject.dev")]
pero hay un error aún: 'object' does not contain a definition for 'area'
que utilizan diferentes montajes pero ¿cómo es posible, cuando uso el punto de ruptura puedo ver que mi areaobject
dinámico tiene area
nombre de la propiedad y también puedo ver el valor de eso, pero el error dice: 'object' does not contain a definition for 'area'
No puedo entender cómo puede ser posible?
Editar
cambio el montaje y el tipo ahora dinámico es interno pero el error sigue siendo como antes
Los tipos anónimos solo son válidos en el ámbito donde los creas. En este caso, no podrá usarlo en MyMethod – Jon
¿Por qué está tratando de hacer esto? Es muy probable que sea una mala idea. – svick
Yo tenía la misma respuesta con este artículo. https://stackoverflow.com/questions/5286695/how-do-i-get-data-from-an-anonymous-type-thats-been-converted-to-an-object/30462304#30462304 –