类在类型为另一个接口的接口中实现属性.从下面的代码我应该如何设置值为' Property2 ', ' Property3

本文关键字:接口 设置 Property2 何设置 Property3 代码 实现 另一个 类型 属性 我应该 | 更新日期: 2023-09-27 18:15:56

N命名空间有IA和IB两个接口,IA中的一个属性返回IB类型

namespace N    
    {
        Interface IA
        {
            // Have a property Property1 which returns of type IB(interface type)
            IB Property1 { get; } 
        }
        interface IB
        {
            int Property2 { get; }
            int Property3 { get; }        
        }
    }

N2是类A在其中实现IA的另一个命名空间。我的代码在这个类必须返回类型IB的Propert1的值。我的类实现IB也

   using N;
            namespace N2
            {
                class A : IA
                {
                    IB property1;
                    IB Property1 { get { return property1; } }
                }
            }

类在类型为另一个接口的接口中实现属性.从下面的代码我应该如何设置值为' Property2 ', ' Property3

可以在实现中添加setter,即使接口没有指定它:

class A : AI
{
    BI property1;
    BI Propert1 { 
      get { return property1; } 
      set { property1 = value; }
    }
}

class A : AI
{
    BI Propert1 { get; set; }
}

您需要实现您的BI接口,然后您可以为Property1使用该类。

using N;
namespace N2
{
    class A : AI
    {
        BI property1;
        BI Property1 { get { return property1; } }
        public A() 
        {
            property1 = new B();
        }
    }
    class B : BI
    {
        int Property2 { get { return 2; } }
        int Property3 { get { return 3; } }
    }
}

您需要BI的实现。

using N; 
namespace N2 {     
    class A : AI     
    {         
         BI Property1 
         { 
              get 
              { 
                   return new B(){Property1 = 5,Property2=100 };
              } 
         }     
    } 

    class B : BI
    {
         int Property1 {get;set;}
         int Property2 {get;set;}
    }
} 

如果您想使用接口AI返回接口BI中属性返回的值,那么我认为您需要重新考虑您的设计。我这样说是因为(在大多数情况下)让一个对象直接提供对另一个对象成员的访问,而不是简单地提供对另一个对象的访问,这是不好的做法。

然而,给定你的代码示例,它看起来不像你试图这样做(我对问题和示例的组合有点困惑)。如果您只是想知道如何设置接口属性返回的值,那么您需要提供一些setter函数,或者通过类构造函数进行初始化。

<<p> Setter属性/strong>

将属性更改为:int Property2 {get;设置;}

Setter方法

为接口或类添加setter方法:public void SetProperty2(int value) {}

构造函数

为实现接口BI(假定为B)的类添加构造函数:

public class B : BI
{
    private int mProperty2;
    public B(int property2)
    {
        mProperty2 = property2;
    }
    public int Property2
    {
        get { return mProperty2; }
    }
}