C# 对象作为接口

C# 对象作为接口,c#,object,interface,casting,type-conversion,C#,Object,Interface,Casting,Type Conversion,我得到了一个实现接口的对象,然后我使用反射找到该对象。如何将对象强制转换到接口中,然后将其放置到列表中?如果对象属于实现接口的类型,则无需强制转换该对象 IMyBehaviour subject = myObject; 如果myObject的类型只是Object,则需要强制转换。我会这样做: IMyBehaviour subject = myObject as IMyBehaviour; 如果myObject没有实现给定的接口,那么subject将变成null。在将其放入列表之前,您可能需要

我得到了一个实现接口的对象,然后我使用反射找到该对象。如何将对象强制转换到接口中,然后将其放置到
列表中?

如果对象属于实现接口的类型,则无需强制转换该对象

IMyBehaviour subject = myObject;
如果
myObject
的类型只是
Object
,则需要强制转换。我会这样做:

IMyBehaviour subject = myObject as IMyBehaviour;

如果
myObject
没有实现给定的接口,那么
subject
将变成
null
。在将其放入列表之前,您可能需要检查它。

这里有一个函数

将对象强制转换到接口中,然后将其放入列表中

public void CastAndAdd(对象对象对象实现接口,IList列表)
{
添加((IMyInterface)对象以实现IMyInterface);
}
我的意思是,如果你已经找到了对象并有了列表,这是非常基本的。只要用您正在使用的任何接口替换
IMyInterface

或者根据您的特定代码对此进行概括。

公共接口IFoo{}
public interface IFoo { }
public class Foo : IFoo {}

private SomeMethod(object obj)
{
    var list = new List<IFoo>();
    var foo = obj as IFoo;

    if (foo != null)
    {
        list.Add(foo);
    }
}
公共类Foo:IFoo{} 私有方法(对象obj) { var list=新列表(); var foo=obj作为IFoo; 如果(foo!=null) { 添加(foo); } }
发布一些代码并指出你的困境。哦,讽刺的是:问题标题是正确的答案,或者如果你有一个foo:var list=new list(foo.ToArray())类型的列表foo;
public interface IFoo { }
public class Foo : IFoo {}

private SomeMethod(object obj)
{
    var list = new List<IFoo>();
    var foo = obj as IFoo;

    if (foo != null)
    {
        list.Add(foo);
    }
}