2
public interface IMyControl<in T> where T : ICoreEntity
{
    void SetEntity(T dataObject);
}

public class MyControl : UserControl, IMyControl<DataObject>   // DataObject implements ICoreEntity
{
    void SetEntity(T dataObject);
}

これまでのところすべて問題ありませんが、なぜこれがnullを作成するのですか?

var control = LoadControl("~/Controls/MyControl.ascx"); // assume this line works
IMyControl<ICoreEntity> myControl = control;

myControlがnullになりました...

4

1 に答える 1

2

dataObjectこれを機能させるためのパラメータとして持つことはできません。メソッドはそれを返すことしかできませんでした。

public interface ICoreEntity { }
public class DataObject: ICoreEntity { }

public interface IMyControl<out T> where T : ICoreEntity
{
    T GetEntity();
}

public class MyControl : IMyControl<DataObject>   // DataObject implements ICoreEntity
{
    public DataObject GetEntity()
    {
        throw new NotImplementedException();
    }
}

今、あなたはできる:

MyControl control = new MyControl();
IMyControl<ICoreEntity> myControl = control;
于 2010-07-31T13:13:32.360 に答える