0
我想擴展一個來自編譯的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解決方案,我有一個共同的項目,其中包括一個名爲Extensions
類。在這個類中,我放置了所有的擴展,包括我正在嘗試爲上面的對象執行的擴展。
但是,這不會在隨後的任何地方顯示在Intellisense中,如果我嘗試構建或編譯,我會得到一個錯誤,指出此方法不存在,而我根本不明白爲什麼?
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中......我在這裏做錯了什麼?
+該模型是最有可能SomeOtherDLL.HumanRace.Human爲SomeOtherDLL.HumanRace是一個命名空間,而不是一個類型 –
你是正確的,我的問題應該反映這一點,但是,我確實已經在我的視圖中正確設置。 ..請參閱上面的更正,因爲它們完全反映了我的代碼在視圖中的設置方式......我現在正確地輸入這些代碼是不好的。 – MaxOvrdrv
這實際上解決了它。使用命名空間而不是靜態類解決了所有的困難!非常感謝! **你可以在7分鐘內接受答案** - 會做! – MaxOvrdrv