У меня есть следующий метод:
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 string.
И есть ли способ проверить динамический тип, если он содержит любое свойство, подобное этому:
if(d.contain(myparam))?
Изменить 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
Изменить III
Это мое AssemblyInfo определения HtmlHelper:
[assembly: AssemblyTitle("MyProject.Presentation")]
[assembly: InternalsVisibleTo("cpanel.MyProject.dev")]
но еще есть ошибка: 'object' does not contain a definition for 'area'
Я использую разные сборки, но как это возможно, когда я использую точку останова, я вижу, что у моего динамического areaobject
есть свойство name area
, а также я могу видеть его значение, но ошибка говорит: 'object' does not contain a definition for 'area'
t как это возможно?
Edit
Я изменяю сборку, и теперь динамический тип является внутренним, но ошибка остается прежней