110,536
社区成员
发帖
与我相关
我的任务
分享
namespace ClassLibrary
{
public interface Entity { }
public interface RootInterface<T> where T : Entity { }
public interface MiddleInterface : RootInterface<Entity> { }
public class Impl : MiddleInterface { }
}
namespace InterfaceCase
{
static void Main(string[] args)
{
object obj = Assembly.LoadFrom("ClassLibrary.dll").CreateInstance("ClassLibrary.Impl");
RootInterface<Entity> root = obj as RootInterface<Entity>;
Console.WriteLine(root == null);
MiddleInterface middle = obj as MiddleInterface;
Console.WriteLine(middle == null);
Console.ReadLine();
}
}
接口 x=子类对象实例;
这种代码,根本用不着还纠结什么“强转?”。namespace Implement
{
class Program
{
static void Main(string[] args)
{
object obj = Assembly.GetExecutingAssembly().CreateInstance("Implement.Impl");
RootInterface<Entity> root = obj as RootInterface<Entity>;
Console.WriteLine(root == null);
MiddleInterface middle = obj as MiddleInterface;
Console.WriteLine(middle == null);
Console.ReadKey();
}
}
interface RootInterface<T> where T : Entity
{ }
interface MiddleInterface : RootInterface<Entity> { }
interface Entity { }
class Impl : MiddleInterface { }
}
class Impl : MiddleInterface, RootInterface<Entity>
之类的代码,既你必须再次指定class也实现之前的接口,否则这个class根本不继承之前的接口。