Просто интересно, как .NET CLR обрабатывает интерфейсы внутри?Как .NET CLR реализует «интерфейс» внутри?
Q1] Что происходит, когда CLR встречает что-то вроде: (. Же используется ниже)
interface ISampleInterface
{
void SampleMethod();
}
class ImplementationClass : ISampleInterface
{
// Explicit interface member implementation:
public void SampleMethod()
{
// Method implementation.
}
static void Main()
{
//Declare an interface instance.
ISampleInterface mySampleIntobj = new ImplementationClass(); // (A)
// Call the member.
mySampleIntobj.SampleMethod();
// Declare an interface instance.
ImplementationClass myClassObj = new ImplementationClass(); // (B)
//Call the member.
myClassObj.SampleMethod();
}
}
Q2: В приведенном выше примере, как являются (A) и (B) дифференцированный?
Q3: Есть Generic Interfaces обрабатываются по-разному?
(Почувствуйте, как нуб, задавая простые вопросы, как это ... в любом случае ....)
Thx все.
Поскольку это отчасти ответ, я оставлю его здесь. Чтобы начать с кода mySampleIntobj.SampleMethod(); и myClassObj.SampleMethod(); может вызывать два разных метода. Первый вызовет любые явно реализованные методы, соответствующие вызову, второй - нет. только в том случае, если нет явного сопоставления методов, они вызовут тот же метод –
Скомпилирует ли это? AFAIK, вы должны иметь открытый 'SampleMethod()' для вызова (B). – Humberto
о, да, жаль..отредактировано/исправлено сейчас :) thx :) – Amitd