我有一个实现两个接口的对象...接口是:
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; …Run Code Online (Sandbox Code Playgroud) 与此Java问题类似.我想指定一个变量实现多个接口.例如
private {IFirstInterface, ISecondInterface} _foo;
public void SetFoo({IFirstInterface, ISecondInterface} value)
{
_foo = value;
}
Run Code Online (Sandbox Code Playgroud)
要求:
这可能吗?
编辑:出于各种原因,我想要这几次.在这个例子中,因为我正在将一组属性从ObservableCollections更改为ReadOnlyObservableCollections.我有一个帮助器类,它创建从源ObservableCollection到另一个Collection的投影.由于ReadOnlyObservableCollection不从ObservableCollection继承而且我只需要IList和INotifyCollectionChanged中的操作,我希望将我的源集合存储为这两个接口的组合,而不是需要ObservableCollection.
对不起我在c#中没有处理泛型
根据这个问题,如何制作一个实现两个接口的generc集合我正在寻找这样的直接方式:当然它会产生错误并且完全是错误的.
interface IEmployee {void DisplayInfo();}
interface ISalary {void CalculateSalary();}
class Nurse : IEmployee, ISalary
{
//some Implementation
}
class Doctor : IEmployee, ISalary
{
//some Implementation
}
class EntryPoint
{
static void Main(string[] args)
{
System.Collections.Generic .List<T> employees where T: ISalary,IEmployee
=new System.Collections.Generic .List<T>();
}
Nurse oNurse = new Nurse();
Doctor oDoctor = new Doctor();
employees.Add(oNurse);
employees.Add(oDoctor);
}
Run Code Online (Sandbox Code Playgroud)
经过一些阅读后,我发现可能我必须首先定义这样的泛型类:
public class HospitalEmployee<T> where T : IEmployee, ISalary
Run Code Online (Sandbox Code Playgroud)
{
}
不幸的是,它很有用,现在我很困惑,不知道该怎么做,请帮助,谢谢你
寻找一种方法来做到这一点:
public interface INumber1 {}
public interface INumber2 {}
public class TestObject : INumber1, INumber2 {}
public static class TestClass
{
public static void TestMethod(INumber1&INumber2 testobject)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
调用TestMethod:
TestClass.TestMethod(new TestObject());
Run Code Online (Sandbox Code Playgroud)
问题是我需要一个参数来包含来自INumber1和INumber2的方法.提示?