是否反映在C#报价的方式来确定是否给予一些System.Type款型的一些接口?
public interface IMyInterface {}
public class MyType : IMyInterface {}
// should yield 'true'
typeof(MyType)./* ????? */MODELS_INTERFACE(IMyInterface);
Run Code Online (Sandbox Code Playgroud) 之前可能已经提出过这个问题,但快速搜索只会提出与C#相同的问题.看这里.
我基本上想要做的是检查给定对象是否实现了给定的接口.
我有点想出了一个解决方案,但是在if或case语句中经常使用它并不够舒服,我想知道Java没有内置的解决方案.
public static Boolean implementsInterface(Object object, Class interf){
for (Class c : object.getClass().getInterfaces()) {
if (c.equals(interf)) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我需要你的帮助.我正在安排一个脚本,可以在RPG游戏中执行异能之前检查各种条件.
所有这些能力都在个别类别(火球,治疗,毒药)中,所有这些都来自另一个抽象类(远程能力,治疗能力,DOT能力),它们都是抽象类(能力)的父级.
为了避免创建多个功能,要处理每一项功能:
void condition(Fireball f){//test};
void condition(Heal f){//test};
void condition(Poison f){//test};
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个可以承担所有类型功能的单个函数调用.
void condition(Ability f){//test}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经成功创建了一个Fireball对象并将其传递给该函数.
Fireball _fire = new FireBall();
condition(_fire);
void condition(Ability f){//test}
Run Code Online (Sandbox Code Playgroud)
从这里我可以访问在Ability类中初始化的所有公共变量,但是我无法访问在派生类中初始化的公共变量(Ranged ability,Healing ability,DOT ability).
是我忘记了什么,还是我从错误的角度看待这个?(我不善于利用继承和抽象类.)
我有一个我正在研究的项目,我想利用Activator.createInstance,以便我可以动态地从XML中提取类名.这些类必须根据其功能订阅两个接口中的至少一个.我的问题是,当我使用Activator.CreateInstance时,告诉我实例化的类订阅哪个接口的最佳方法是什么?我应该把演员包裹在试试中吗?看起来好像很慢.也许我应该把它转换为obj然后调用GetType并将其与我的接口名称进行比较?任何帮助表示赞赏!
我得到以下警告:
对标记为"值不能为空"属性的实体的可能"空"赋值
我的代码:
if (verifier.GetType().GetInterface(typeof(IAsyncVerifier).FullName, true) == null)
{
continue;
}
Run Code Online (Sandbox Code Playgroud)
typeof(IAsyncVerifier).FullName部分警告.怎么可以为空?你会怎么解决它?或者也许有更好的方法来确定对象是否实现了特定的接口?