C# 如何将对象强制转换到它实现但不执行的接口';你不能延长吗?
我有一个类C# 如何将对象强制转换到它实现但不执行的接口';你不能延长吗?,c#,class,interface,scripting,casting,C#,Class,Interface,Scripting,Casting,我有一个类脚本,它有几个属性,但没有方法。然后创建扩展Script的类。理想情况下,脚本可能具有方法Update(),但不会扩展接口IUpdateable(其中指定了方法“Update”)。当这个脚本被添加到一个对象中时,该对象就会意识到,虽然该对象没有扩展IUpdateable,但它仍然是它的一个实现。然后,它会将脚本添加到具有更新方法的脚本列表中,以便可以对其进行更新 我的问题集中在两件事上,我如何判断一个类是否实现了一个接口(没有扩展它),以及在具备这些知识的情况下,如何将它转换为一个可以
脚本
,它有几个属性,但没有方法。然后创建扩展Script
的类。理想情况下,脚本可能具有方法Update()
,但不会扩展接口IUpdateable
(其中指定了方法“Update”)。当这个脚本被添加到一个对象中时,该对象就会意识到,虽然该对象没有扩展IUpdateable
,但它仍然是它的一个实现。然后,它会将脚本添加到具有更新方法的脚本列表中,以便可以对其进行更新
我的问题集中在两件事上,我如何判断一个类是否实现了一个接口(没有扩展它),以及在具备这些知识的情况下,如何将它转换为一个可以调用Update()
方法的对象
<> P>还有其他的选择我应该考虑吗?
谢谢您可以使用反射进行此操作 要检查类是否实现了接口,请尝试以下方法-
typeof(IMyInterface).IsAssignableFrom(typeof(MyType))
typeof(MyType).GetInterfaces().Contains(typeof(IMyInterface))
我想你可能会从这里使用的术语中得到一些困惑的答案。只有一个接口扩展了另一个接口,“实现”一个接口确实意味着在声明中包含它,例如
class Foo:IBar
。我想你的意思是“我怎么知道一个类是否支持接口所需的所有成员,而不实际实现它?”对吗?