类在类型为另一个接口的接口中实现属性.从下面的代码我应该如何设置值为' 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; } }
}
}
可以在实现中添加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; }
}
}