如何扩展实例化的类方法

时间:2015-05-04 16:15:24

标签: c# asp.net-mvc-4

我正在尝试扩展来自已编译DLL的类方法,并尝试从MVC项目内部执行此操作。但是,出于某种原因,它不会选择它。

这就是我通常扩展实例化类方法的方法,例如:

    public static string CSVEncode(this string original)
    {
        //.......
    }

有了这个,如果我有任何字符串,我可以从对象本身看到并调用CSVEncode()方法,例如:

string temp = "some string goes here";
string csv = temp.CSVEncode();

但是,在最近的尝试中它根本不起作用......

这里是我试图为这个问题的目的扩展的对象的一个​​小定义(例如:有更多的属性和方法不需要在这里迭代)。

namespace SomeOtherDLL.HumanRace
{
    public class Human
    {
       //... some properties... 

       public Human(){ }

       public bool CanAccess(string AppName)
       {
         //....  
       }
    }
}

在我的MVC解决方案中,我有一个Common项目,其中包含一个名为Extensions的类。在这个类中我放置了所有扩展,包括我试图为上面的对象执行的扩展。

然而,之后的任何地方都没有出现这种情况,如果我尝试构建或编译,我会收到错误,说这个方法不存在,我只是不明白为什么?

namespace MyProj.Common
{
    public static class Extensions
    {
        public static bool CanAccess(this HumanRace.Human original, int AppID)
        {
            //...some code here... 
        }
    }
}

现在从我所知道的过去我已经做过的其他对象扩展,这应该是完美的...

以下是我尝试在“视图”页面中使用它的示例:

@model SomeOtherDLL.HumanRace.Human
@using MyProj.Common.Extensions

@Html.Raw(Model.CanAccess(59) ? "<img src='CanAccess.jpg' />" : "<img src='CannotAccess.jpg' />")

.............

这在Visual Studio中无法解决...我在这里做错了吗?

1 个答案:

答案 0 :(得分:1)

您的Extensions类位于命名空间MyProj.Common中,但您似乎并未将其包含在您的视图中。尝试添加

texture_CelestialBody

到你的观点。