У меня есть различные объекты разных типов. Для всех них я хочу вызвать статический метод своего класса. Все классы используют один и тот же метод. Как я могу вызвать этот статический метод без явного вызова класса?C# статический метод от объекта
ответ
Вы хотите вызвать каждый метод на каждом из отдельных классов? Вы должны вызывать их явно, ссылаясь на каждый класс отдельно.
Стационарный метод для каждого класса имеет один и тот же общий код? Поместите его в статический класс для использования всеми другими классами или создайте один или несколько методов расширения.
Если эти классы расширяют один и тот же базовый класс, то вызов метода в базовом классе будет работать.
Например:
public class Base
{
public static DoSomething()
{
//something
}
}
public class A: Base
{
}
public class B: Base
{
}
следующих вызовов метода выполняет один и тот же код:
A.DoSomething();
B.DoSomething();
Base.DoSomething();
Вы можете выполнить это, поставив метод в каждом объекте, который вызывает соответствующий статический метод. Однако тот факт, что вы хотите сделать это, говорит о том, что ваш дизайн может быть улучшен. Если вы скажете нам, что вы пытаетесь сделать, кто-то может предложить лучший подход.
Вы ищете что-то вроде List<object>
, где у всех объектов есть статический метод с именем, например MethodX()?
Если это так, вы можете подумать о них, найти имя метода и выполнить его.
Либо это, либо наследование, как и другие упоминания (что было бы правильным путем).
Если вам нужно иметь конкретную реализацию для каждого типа, я не думаю, что статический метод является правильным подходом ... Вместо этого вы определяете интерфейс, реализованный всеми вашими классами. После этого вы можете вызвать метод экземпляра, определенный с помощью интерфейса на каждом объекте:
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 (как объяснил Дэвид)
Я не уверен, что именно вы пытаетесь сделать. Но, используя свое воображение, я придумываю эту реализацию.
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. статический метод .Net строкового объекта
- 2. C# статический метод рефакторинга
- 3. C# статический публичный метод
- 4. Требуется статический метод C++
- 5. C# виртуальный статический метод
- 6. Статический метод для создания объекта вместо конструктора
- 7. Статический метод Android и создание объекта
- 8. Метод элемента C# как статический метод («метод обратного расширения»)
- 9. C# частный метод как статический
- 10. Статический метод протокола Objective-C?
- 11. статический метод в C++ «Интерфейс»
- 12. Статический метод зависит от класса ребенка?
- 13. Статический класс и статический метод
- 14. экземпляр объекта на лету статический метод?
- 15. synchorised статический метод против объекта класса синхронизирует
- 16. Как сделать статический метод для переменной объекта
- 17. C# интерфейс статический метод вызова с обобщениями
- 18. div внутренний html используя c статический статический метод? как
- 19. C++: Calling унаследовал статический метод от статического метода
- 20. Статический метод getDBConnection() от типа DBConnection должен быть доступен статический
- 21. Объявить общий статический метод в C#
- 22. Как вызвать статический метод java от jruby
- 23. Java - статический метод, который зависит от «состояния»
- 24. доступа статический метод от экземпляра контроллера переменной
- 25. вызова статический метод от статического блока
- 26. C# Как Назвать статический метод из подкласса
- 27. Как ввести статический статический метод
- 28. Интеллектуальный общий статический метод
- 29. C++ MI статический шаблон - статический disapears метод при присоединиться
- 30. Статический метод из сервлета
Не могли бы вы дать нам еще какой-нибудь контекст? –