Мне нравится хранить вещи отдельно при программировании.Это одна из причин, почему наследование важно, я считаю.
Я использую файл DLL, который состоит из класса, который я не могу изменить.Файл DLL содержит ClassA для иллюстрации моего примера.
class Program
{
static void Main(string[] args)
{
ClassA object1 = new ClassA();
SomeMethod<ClassA>(object1 ); // error because " a does not implement ITemp"
}
static T SomeMethod<T>(T input)
where T:ITemp // make sure input has a method MyCustomMethod
{
input.MyCustomMethod();
return input;
}
// create this interface so that compiler does not complain when
// calling MyCustomMethod in method above
interface ITemp
{
void MyCustomMethod();
}
}
// classA is a sealed class in a dll file that I cannot modify
public class ClassA
{
public void MyCustomMethod()
{
}
}
Почему возникает ошибка, если object1 реализует интерфейс ITemp!У object1 есть метод MyCustomMethod ()
Я знаю, что могу использовать отражение, чтобы решить эту проблему, но мне нравится держать мой код в чистоте.Также я хочу избежать использования динамического типа.