Ter*_*lis 21 c# interface composition
我有一个实现两个接口的对象...接口是:
public interface IObject
{
string Name { get; }
string Class { get; }
IEnumerable<IObjectProperty> Properties { get; }
}
public interface ITreeNode<T>
{
T Parent { get; }
IEnumerable<T> Children { get; }
}
Run Code Online (Sandbox Code Playgroud)
这样的
public class ObjectNode : IObject, ITreeNode<IObject>
{
public string Class { get; private set; }
public string Name { get; private set; }
public IEnumerable<IObjectProperty> Properties { get; set; }
public IEnumerable<IObject> Children { get; private set; }
public IObject Parent { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个函数需要其中一个参数来实现这两个接口.我将如何在C#中指定它?
一个例子是
public TypedObject(ITreeNode<IObject> baseObject, IEnumerable<IType> types, ITreeNode<IObject>, IObject parent)
{
//Construct here
}
Run Code Online (Sandbox Code Playgroud)
或者是我的设计错误的问题,我应该以某种方式在一个接口上实现这两个接口
Jes*_*rew 31
public void Foo<T>(T myParam)
where T : IObject, ITreeNode<IObject>
{
// whatever
}
Run Code Online (Sandbox Code Playgroud)
And*_*tad 12
在C#中,接口本身可以从一个或多个其他接口继承.所以,一个解决办法是定义一个接口,比方说IObjectTreeNode<T>来自两个派生IObject和ITreeNode<T>.
| 归档时间: |
|
| 查看次数: |
7920 次 |
| 最近记录: |