1

ネストされたインターフェイスでいくつかのプロパティをオーバーライドする必要があります。やってみる:

public interface INode {
    INode Parent { get; }
    ICollection<INode> Items { get; }
    Boolean IsKey { get; }
    String Name { get; set; }
    Object Value { get; set; }
    Boolean IsValidValue(Object value);
    Boolean HasFixedValues { get; }
    ICollection<Object> FixedValues { get; }
    String Description { get; set; }
    String GetFullPath();
    Boolean IsExists();
    INode GetFromXML(XElement xml);
    XElement WriteToXml();
}

public interface INode<T> : INode {       
    new T Value { get; set; }
    new Boolean IsValidValue(T value);
    new ICollection<T> FixedValues { get; }
}

しかし、コンパイルエラーが発生します。どうすればいいですか?

例外メッセージ:

エラー 21 アセンブリ 'AcadInfo_Accessor、Version=0.0.0.0、Culture=neutral、PublicKeyToken=null' のタイプ 'AndreyBushman.AutoCAD.INode_Impl 1' from assembly 'AcadInfo_Accessor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation. TestProject Error 22 The "BuildShadowTask" task failed unexpectedly. System.TypeLoadException: Method 'set_Value' in type 'AndreyBushman.AutoCAD.INode_Impl1' のメソッド 'set_Value' には実装がありません。

4

1 に答える 1

0

INodeこのインターフェイスを実装するときは、 からのメンバーとからのメンバーの両方を必ず実装してくださいINode<T>

class Test : INode<int>
{
    public int Value {
        get {
            throw new NotImplementedException();
        }
        set {
            throw new NotImplementedException();
        }
    }

    object INode.Value {
        get {
            throw new NotImplementedException();
        }
        set {
            throw new NotImplementedException();
        }
    }
}
于 2012-12-25T13:23:04.310 に答える