相关疑难解决方法(0)

如何确定类型是否实现了具有C#反射的接口

是否反映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# reflection interface

527
推荐指数
11
解决办法
20万
查看次数

测试对象是否实现接口

之前可能已经提出过这个问题,但快速搜索只会提出与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)


编辑:好的,谢谢你的回答.特别是Damien Pollet和Noldorin,你让我重新考虑我的设计,所以我不再测试接口了.

java

140
推荐指数
4
解决办法
13万
查看次数

C#,Unity - 采用多个不同对象的单一功能

我需要你的帮助.我正在安排一个脚本,可以在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).

是我忘记了什么,还是我从错误的角度看待这个?(我不善于利用继承和抽象类.)

c# inheritance class function abstract

5
推荐指数
1
解决办法
1131
查看次数

Activator.CreateInstance有两个接口

我有一个我正在研究的项目,我想利用Activator.createInstance,以便我可以动态地从XML中提取类名.这些类必须根据其功能订阅两个接口中的至少一个.我的问题是,当我使用Activator.CreateInstance时,告诉我实例化的类订阅哪个接口的最佳方法是什么?我应该把演员包裹在试试中吗?看起来好像很慢.也许我应该把它转换为obj然后调用GetType并将其与我的接口名称进行比较?任何帮助表示赞赏!

c# interface activator

2
推荐指数
1
解决办法
1055
查看次数

ReSharper中可能的空赋值.我看不出那是怎么回事?

我得到以下警告:

对标记为"值不能为空"属性的实体的可能"空"赋值

我的代码:

if (verifier.GetType().GetInterface(typeof(IAsyncVerifier).FullName, true) == null)
                {
                    continue;
                }
Run Code Online (Sandbox Code Playgroud)

typeof(IAsyncVerifier).FullName部分警告.怎么可以为空?你会怎么解决它?或者也许有更好的方法来确定对象是否实现了特定的接口?

.net c# resharper

1
推荐指数
1
解决办法
637
查看次数