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);
}

到目前为止一切都很好,但是为什么这会产生空值?

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

myControl 现在为空...

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 回答