C# 将接口实现作为组件添加到游戏对象

C# 将接口实现作为组件添加到游戏对象,c#,unity3d,dependency-injection,interface,components,C#,Unity3d,Dependency Injection,Interface,Components,使用依赖项注入,您可以拥有一个表示不同类的相同接口,因为类实现可以根据在绑定阶段的绑定阶段定义绑定到依赖项容器。我的问题是,一旦完成了各自的绑定,如果实现是单行为的,是否有机会将接口作为组件添加到游戏对象中 关于我为什么要这样做的故事很长,所以可以假设必要性刚刚出现:) 查找一些伪代码以更好地理解: public interface IFoo { //... } public class FooIplementtation1: MonoBehaviour { //.... }

使用依赖项注入,您可以拥有一个表示不同类的相同接口,因为类实现可以根据在绑定阶段的绑定阶段定义绑定到依赖项容器。我的问题是,一旦完成了各自的绑定,如果实现是单行为的,是否有机会将接口作为组件添加到游戏对象中

关于我为什么要这样做的故事很长,所以可以假设必要性刚刚出现:)

查找一些伪代码以更好地理解:

public interface IFoo {
    //...
}

public class FooIplementtation1: MonoBehaviour {
    //....
}

public class FooIplementtation2: MonoBehaviour {
    //....
}

if (someCondition) {
    Container.Bind<IFoo >().To<FooIplementtation1>();
} else {
    Container.Bind<IFoo >().To<FooIplementtation2>()
}
公共接口IFoo{
//...
}
公共类FooiplementStation1:单一行为{
//....
}
公共类食品要素2:单一行为{
//....
}
如果(某些条件){
Container.Bind().To();
}否则{
Container.Bind().To()
}
我打算做的是:

//Error. Interface type cannot be added as component.
someTransform.gameObject.AddComponent<IFoo>();
//错误。接口类型不能添加为组件。
someTransform.gameObject.AddComponent();
但我得到了一个错误:

类型IFoo不能用作泛型或方法GameObject.AddComponent()中的类型参数“T”

方法签名为:

public T AddComponent<T>() where T : Component;
public T AddComponent(),其中T:Component;
Si我试图使我的接口继承自
monobhavior
和表单
组件,但没有成功

知道这是否可能,如果可能,如何实现吗?

文档说明

将名为className的组件类添加到游戏对象

组件类型应为类,不能为结构或接口。 接口只是一个契约,声明类必须实现给定的接口函数和属性。您正在隐藏使用代码接口的原因,但如果可能,请创建一个包含所有类共享的所有内容的基类。简而言之。从MonoBehavior继承基类,您可以做您想要实现的事情

也可以认为接口根本没有数据。它们只是空的实现,它的哪个部分可以是对象的组件?它们只是让编码变得更简单而已。也许,你想看看这个