Наследование из нескольких интерфейсов с тем же именем метода в абстрактный класс [duplicate]

Если таблицы cols и значения являются переменными, то существует два способа:

С двойными кавычками "" полный запрос:

$query = "INSERT INTO $table_name (id, $col1, $col2)
                 VALUES (NULL, '$val1', '$val2')";

Или

 $query = "INSERT INTO ".$table_name." (id, ".$col1.", ".$col2.")
               VALUES (NULL, '".$val1."', '".$val2."')";

С одинарными кавычками '':

$query = 'INSERT INTO '.$table_name.' (id, '.$col1.', '.$col2.')
             VALUES (NULL, '.$val1.', '.$val2.')';

Использовать обратные тики ``, когда имя столбца / значения похоже на зарезервированное ключевое слово MySQL.

Примечание: Если вы указываете имя столбца с именем таблицы, используйте обратные тики следующим образом:

`table_name`. `column_name` & lt; - Примечание: исключить . из обратных тиков.

54
задан Bakuriu 24 April 2014 в 09:23
поделиться

7 ответов

Явным образом реализуя интерфейс, например:

public interface ITest {
    void Test();
}
public interface ITest2 {
    void Test();
}
public class Dual : ITest, ITest2
{
    void ITest.Test() {
        Console.WriteLine("ITest.Test");
    }
    void ITest2.Test() {
        Console.WriteLine("ITest2.Test");
    }
}

При использовании явных реализаций интерфейса функции не являются общедоступными в классе. Поэтому для доступа к этим функциям вы должны сначала перенести объект в тип интерфейса или присвоить его объявленной переменной типа интерфейса.

var dual = new Dual();
// Call the ITest.Test() function by first assigning to an explicitly typed variable
ITest test = dual;
test.Test();
// Call the ITest2.Test() function by using a type cast.
((ITest2)dual).Test();
81
ответ дан Pete 24 August 2018 в 01:58
поделиться

Вы можете реализовать один интерфейс Явно и еще один раз.

public interface ITest {
    void Test();
}
public interface ITest2 {
    void Test();
}
public class Dual : ITest, ITest2
{
    public void Test() {
        Console.WriteLine("ITest.Test");
    }
    void ITest2.Test() {
        Console.WriteLine("ITest2.Test");
    }
}

ITest.Test будет выполняться по умолчанию.

Dual dual = new Dual();
dual.Test();
((ITest2)dual).Test();

Выход :

Console.WriteLine("ITest.Test");
Console.WriteLine("ITest2.Test");
1
ответ дан Bimal Das 24 August 2018 в 01:58
поделиться

Вы должны использовать явную реализацию интерфейса

10
ответ дан Gopher 24 August 2018 в 01:58
поделиться

Вы можете реализовать один или оба этих интерфейса явно .

Предположим, что у вас есть эти интерфейсы:

public interface IFoo1
{
    void DoStuff();
}

public interface IFoo2
{
    void DoStuff();
}

Вы можете реализовать оба типа это:

public class Foo : IFoo1, IFoo2
{
    void IFoo1.DoStuff() { }

    void IFoo2.DoStuff() { }        
}
8
ответ дан Mark Seemann 24 August 2018 в 01:58
поделиться
public interface IDemo1
{
 void Test();
}
public interface IDemo2
{
 void Test();
}
public class clsDerived:IDemo1,IDemo2
{
  void IDemo1.Test() 
  {
   Console.WriteLine("IDemo1 Test is fine");
  }
 void IDemo2.Test() 
  {
    Console.WriteLine("IDemo2 Test is fine");
  }
}

public void get_methodes()
{
    IDemo1 obj1 = new clsDerived();
    IDemo2 obj2 = new clsDerived();
    obj1.Test();//Methode of 1st Interface
    obj2.Test();//Methode of 2st Interface
}
2
ответ дан Ranajit kumar 24 August 2018 в 01:58
поделиться
public class ImplementingClass : AClass1, IClass1, IClass2

    {
        public override string Method()
        {
            return "AClass1";
        }
        string IClass1.Method()
        {
            return "IClass1";
        }
         string IClass2.Method()
        {
            return "IClass2";
        }
    }

Поэтому при вызове из другого класса вам придется вводить объект в требуемый интерфейс или абстрактный класс.

ImplementingClass implementingClass = new ImplementingClass();
((AClass1)implementingClass).Method();
1
ответ дан Rohit.P 24 August 2018 в 01:58
поделиться

Иногда вам может даже понадобиться:

public class Foo : IFoo1, IFoo2
{
    public void IFoo1.DoStuff() { }

    public void IFoo2.DoStuff()
    {
        ((IFoo1)this).DoStuff();
    }        
}
4
ответ дан Sebastian 24 August 2018 в 01:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: