我有不同類型的各種對象。 對於所有這些人,我想調用他們的類的靜態方法。所有的類都有相同的方法。 如何在不顯式調用該類的情況下調用此靜態方法?來自對象的C#靜態方法
0
A
回答
0
你想調用每個類的每個方法嗎?你必須明確地調用它們,分別引用每個類。
每個類的靜態方法是否有相同的通用代碼?把它放到靜態類中供所有其他類使用,或創建一個或多個擴展方法。
1
如果這些類都擴展相同的基類,那麼調用基類的方法將工作。
例如:
public class Base
{
public static DoSomething()
{
//something
}
}
public class A: Base
{
}
public class B: Base
{
}
下面的方法調用執行相同的代碼:
A.DoSomething();
B.DoSomething();
Base.DoSomething();
3
你可以通過把一個方法調用相應的靜態方法每個對象做到這一點。然而,你想這樣做的事實表明你的設計可能會有所改進。如果您想告訴我們您要完成的任務,有人可能會提出更好的方法。
0
你是否在尋找像你這樣的東西有類似List<object>
其中所有的對象都保證有一個名爲MethodX()的靜態方法?
如果是這樣你可以反思他們,尋找方法名稱,並執行它。
或者像其他人提到的那樣或繼承(這將是正確的方法)。
0
如果你需要爲每種類型都有一個特定的實現,我不認爲靜態方法是正確的方法......相反,你應該定義一個由所有類實現的接口。然後,您可以調用接口中的每個對象上定義的實例方法:
public interface IDoSomething
{
void DoSomething();
}
public class A: IDoSomething
{
public void DoSomething()
{
// implementation for A
}
}
public class B: IDoSomething
{
public void DoSomething()
{
// implementation for B
}
}
當然,如果你不需要爲每一個類型,那麼你可以調用Base.DoSomething具體的實現(如戴維解釋)
0
我不確定你到底想要做什麼。但用我的想象力,我想出了這個實現。
internal class Program
{
private static void Main(string[] args)
{
var staticMethodClasses = new List<StaticMethodClassBase>
{new ClassA(), new ClassB()};
foreach (StaticMethodClassBase item in staticMethodClasses)
{
Type t = item.GetType();
MethodInfo staticMethod =
t.GetMethod("DoSomething", BindingFlags.Static | BindingFlags.Public);
staticMethod.Invoke(null, null);
}
}
}
public abstract class StaticMethodClassBase
{
}
public class ClassA : StaticMethodClassBase
{
public static void DoSomething()
{
Console.WriteLine("Class A");
}
}
public class ClassB : StaticMethodClassBase
{
public static void DoSomething()
{
Console.WriteLine("Class B");
}
}
相關問題
- 1. C#靜態方法vs對象實例
- 2. 來自未知對象的靜態方法調用
- 3. 如何連接來自Java類對象的靜態方法?
- 4. C++靜態對象中的類的靜態數據成員和靜態方法?
- 5. JavaScript對象返回靜態方法和自己的方法
- 6. 靜態方法改變狀態對象
- 7. 獲取父對象的靜態方法
- 8. PHPUnit的mock對象和靜態方法
- 9. 對象和靜態方法的區別
- 10. 靜態對象中的魔術方法
- 11. 靜態對象的C++
- 12. 訪問對象保護的靜態字段從它自身的靜態方法
- 13. 來自靜態環境的非靜態方法
- 14. 如何在靜態方法中對對象進行靜態方法調用?
- 15. 靜態工廠方法和靜態對象的內存泄漏
- 16. 模擬PHPUnit中的對象來模擬靜態方法調用?
- 17. C#虛擬(或抽象)靜態方法
- 18. C#,實現'靜態抽象'像方法
- 19. 對象中的靜態方法和非靜態方法之間的區別
- 20. 從抽象類中的靜態方法調用非靜態方法(C++)
- 21. 按對象調用靜態方法...!
- 22. 訪問來自匿名對象非靜態對象在Java中
- 23. 處理靜態對象c#
- 24. C#靜態對象引用
- 25. C++ - 非本地靜態對象vs本地靜態對象
- 26. C#中的靜態方法?
- 27. C++中的靜態方法
- 28. C++上的靜態方法
- 29. 如何在靜態方法中引用非靜態對象
- 30. 調用靜態JNI方法返回來自C++
你能否給我們更多的背景知識? – 2009-09-14 23:30:36