我有一个方法如下:
public void MyMethod(object obj){
// implement
}
我这样称呼它:
MyMethod(new { myparam= "waoww"});
那么我该如何实施MyMethod()
获取 myparam 值?
Edit
我用这个:
dynamic d= obj;
string param = d.myparam;
但错误上升:
'object' does not contain a definition for 'myparam'
我还使用断点,我看到 d 有 myparam 字符串属性。
有没有什么方法可以检查动态类型是否包含这样的属性:
if(d.contain(myparam))?
Edit II
这是我的主要代码:
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
}
并将其称为:
<p>@Html.SecureActionLink("Secure Link between Areas", "Index", "Context",
new { area = "Settings" }, null)</p>
错误是:
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
这是我的 HtmlHelper 定义的 AssemblyInfo:
[assembly: AssemblyTitle("MyProject.Presentation")]
[assembly: InternalsVisibleTo("cpanel.MyProject.dev")]
但还有一个错误:'object' does not contain a definition for 'area'
我使用不同的程序集,但是怎么可能,当我使用断点时,我可以看到我的动态areaobject
have area
name 属性,我也可以看到它的值,但错误说:'object' does not contain a definition for 'area'
我想不通这怎么可能?
Edit
我更改了程序集,现在动态类型是内部的,但错误仍然像以前一样