#c# #asp.net-mvc #entity-framework
#c# #asp.net-mvc #entity-framework
Вопрос:
У меня есть следующий интерфейс ISampleInterface
public interface ISampleInterface
{
bool sampleMethod(string _txt);
}
Итак, этот интерфейс я реализовал следующим образом,
public Class SampleInterface : BaseEntity<Sample>, ISampleInterface
{
IContext _context;
public SampleInterface (IContext context)
: base(context)
{
_context = context;
}
public bool sampleMethod(string _txt)
{
return true;
}
}
итак, из моего основного статического метода, как вызвать этот sampleMethod, не вызывая класс SampleInterface
мой класс обслуживания привязан к сущности, которая является «Образцом», поэтому я просто хочу знать, что без вызова класса обслуживания можно вызвать этот метод (sampleMethod) через ISampleInterface
public static void main(String[] args)
{
}
Точная проблема, с которой я сталкиваюсь, у меня есть пакетное задание и веб-проект, веб-проект, я могу вызвать этот метод с помощью IOC addictive, также я хочу вызвать тот же метод в пакетном задании, я не могу, потому что основным методом batchjob является статический метод
Комментарии:
1. Итак, вы хотите вызвать метод экземпляра для класса без экземпляра указанного класса?
2. Вы не можете вызвать метод экземпляра без экземпляра!
3. @Gesso Это не имеет смысла. Чего вы пытаетесь достичь здесь?
4. Это проблема XY. Вы хотите что-то сделать, X, и вы думаете, что решение — Y, вызывая метод в интерфейсе без какого-либо экземпляра класса, реализующего этот интерфейс. Теперь вы спрашиваете, как сделать Y, но это просто невозможно. Интерфейс — это контракт, а не то, что вы можете вызвать. Вы можете вызвать его в классе, который реализует указанный интерфейс. Пожалуйста, объясните свой X или почему вы думаете, что вам это нужно. Статическая часть здесь — просто отвлекающий маневр, она не имеет значения.
5. @Gesso нет, вы действительно должны предоставить больше контекста, все еще слишком расплывчато. Да, ваш
SampleInterface
класс наследуется отBaseEntity<Sample>
, если вам нужен класс, который реализуетISampleInterface
, но не привязанSample
, вам нужно создать новый класс, который реализует этот интерфейс. Но почему? Если вы хотите вызвать метод, который находится внутриSampleInterface.sampleMethod()
, вы должны создать экземплярSampleInterface
:new SampleInterface().sampleMethod()
. Вы должны вызватьISampleInterface.sampleMethod()
экземпляр . Объясните, почему вы этого не хотите.
Ответ №1:
sampleMethod
это метод экземпляра, поэтому вам нужен экземпляр. Невозможно вызвать его без него!
public static void main(String[] args)
{
var instance = new SampleInterface();
instance.sampleMethod("some text");
}
Ответ №2:
Вызов метода экземпляра без какого-либо экземпляра не имеет смысла в C #.
Это все равно, что просить выполнить числовое вычисление без числа.
Возможно, это связано с вашим контекстом: интерфейсы должны быть реализованы на уровне экземпляра, статических интерфейсов не существует. Хотя это и не совсем невозможно, это недоступно в C # по дизайну.
Итак, с экземплярами, для полноты ответа:
Для создания экземпляра используйте конструктор (поскольку вы не определили ни одного конструктора, неявно создается общедоступный конструктор без параметров по умолчанию)
Затем вы можете вызвать метод для экземпляра.
var instance = new SampleInterface();
instance.someMethod("foo");
Комментарии:
1. Извините, я только что добавил подрядчика
2. То, что вы добавили, не компилируется, что это за частное поле
_sample
? это не определено в классе.3. Если у вас есть определенный конструктор, вам нужно вызвать соответствующий конструктор с
new
помощью . Если у вас есть какие-то параметры для передачи конструктору, вам нужно передать их, как при вызове функцииnew MyClassName(parameter1, parameter2)
4. На самом деле мой класс обслуживания привязан к объекту, который является «Образцом», интересно, может ли он вызывать без создания экземпляра
5. @Gesso чего ты пытаешься достичь? Какую проблему вы хотите решить?