![](/img/trans.png)
[英]C#: How do I call a static method of a base class from a static method of a derived class?
[英]C# How do I call a method from another class inside of my interface without making the method static?
我試圖ping谷歌檢查我是否連接到互聯網,我想在我的一個接口中實現這一點,但我不確定如何做到這一點,因為我的方法不是靜態的。 任何幫助或見解將不勝感激。 接口的概念對我來說是新的,所以我可以用來更好地理解它們的任何資源也會非常有用! checkConnection()是我想要開始的地方,也許是創建一個構造函數來實例化該方法? 但我真的不確定如何實現這一點。 這是我到目前為止:
public class ApplicationManager : IApplicationManager
{
public void ManagerRun()
{
if (InternetConnectionCheck.CheckForInternetConnection() == true)
{
}
else if(InternetConnectionCheck.CheckForInternetConnection() == false)
{
}
public interface IApplicationManager
{
void ManagerRun();
bool checkConnection();
}
}
我刪除了大部分代碼,因為它與問題無關,但問題是“InternetConnectionCheck.CheckForInternetConnection()曾經是一個靜態方法,但它不再是靜態方法,因為我想在其中實現它界面,以便我可以調用它一次,然后只需要在我的代碼的其余部分引用它,每當我想要進行互聯網連接檢查。這是檢查的代碼:
class InternetConnectionCheck
{
public bool CheckForInternetConnection()
{
try
{
using (var client = new WebClient())
{
using (var stream = client.OpenRead("http://www.google.com"))
{
return true;
}
}
}
catch
{
return false;
}
}
}
}
我想在我的一個接口中實現它
接口只允許您聲明實現者必須具有的屬性,方法和事件。 接口方法不能有正文。 在您的示例中, ApplicationManager
需要實現IApplicationManager
接口所需的checkConnection()
方法。
要從另一個類調用一個類的方法,它必須是靜態的,或者必須實例化該類的實例。
一般來說,如果一個方法沒有引用其類的任何實例成員,那么它應該是靜態的(沒有太多的點是非靜態的)。
基於您的代碼的一些其他提示:
ApplicationManager
的子ApplicationManager
。 checkConnection
應該是CheckConnection
以符合C#規范。 == true
並使用!
而不是== false
,如if (CheckForInternetConnection())
和if (!CheckForInternetConnection())
。 更好的是,只需使用else
而不是測試錯誤情況。 (正如@Servy指出的那樣,你在你的例子中進行了兩次單獨的調用,這不是你想要的)。 該方法不使用實例狀態,因此該方法在概念上是static
。
作為實例方法沒有意義。 使其成為實例方法將暗示該方法使用對象的某種狀態,並且要求任何希望執行該方法的人擁有該類型的實例以便執行操作,即使您實際上沒有計划使用該對象的任何東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.