我正在尝试扩展来自已编译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中无法解决...我在这里做错了吗?
答案 0 :(得分:1)
您的Extensions类位于命名空间MyProj.Common中,但您似乎并未将其包含在您的视图中。尝试添加
texture_CelestialBody
到你的观点。