访问对象中对象的属性
Access properties of objects in an object
我有 3 个 classes MetaA、MetaB 和 MetaC。每个都有一些属性。
在某些情况下,最好只有一个 class 包含所有三个 Meta class 的属性,例如 MetaComposite。在复合 class 中,我尝试创建每个 MetaA、B 和 C 的实例,希望我可以像这样访问属性:
Meta Composite mc = new MetaComposite();
mc.MetaA.Property1 = "Hello";
由于 C# 不允许多重继承,创建一个由其他 class 组成的 class 的最佳方法是什么?我可以在复合 class 中放置字段并编写 getter 和 setter 以传递 属性 值,但这将是很多重复的代码。
这里正确的做法是什么?
如何为所有三个 Meta classes 创建接口并让 MetaComposite class 实现所有这三个接口如何。 MetaComposite class 可以实例化正确的 Meta class 并调用它来执行所需的 属性.
这是一个例子:
public interface IMeta1
{
int Metaproperty1 {get; set;}
}
public interface IMeta2
{
int Metaproperty2 {get; set;}
}
public interface IMeta3
{
int Metaproperty3 {get; set;}
}
public class MetaComposite : IMeta1, IMeta2, IMeta3
{
private readonly Meta1 _meta1;
private readonly Meta2 _meta2;
private readonly Meta3 _meta3;
public MetaComposite()
{
_meta1 = new Meta1();
_meta2 = new Meta2();
_meta3 = new Meta3();
}
public int Property1
{
get { return _meta1.Property1; }
set { _meta1.Property1 = value; }
}
public int Property2
{
get { return _meta2.Property2; }
set { _meta2.Property2 = value; }
}
public int Property3
{
get { return _meta3.Property3; }
set { _meta3.Property3 = value; }
}
}
所有属性都在 class 级别的原因是什么?
为什么不直接使用您写的内容?
class MetaComposite
{
public MetaAClass MetaA { get; private set; }
public MetaBClass MetaB { get; private set; }
public MetaCClass MetaC { get; private set; }
public MetaComposite()
{
MetaA = new MetaAClass();
MetaB = new MetaBClass();
MetaC = new MetaCClass();
}
}
public void Main()
{
var composite = new MetaComposite();
composite.MetaA.Field1 = 1;
composite.MetaB.Field2 = '2';
composite.MetaC.Field3 = new MetaDClass();
}
我有 3 个 classes MetaA、MetaB 和 MetaC。每个都有一些属性。
在某些情况下,最好只有一个 class 包含所有三个 Meta class 的属性,例如 MetaComposite。在复合 class 中,我尝试创建每个 MetaA、B 和 C 的实例,希望我可以像这样访问属性:
Meta Composite mc = new MetaComposite();
mc.MetaA.Property1 = "Hello";
由于 C# 不允许多重继承,创建一个由其他 class 组成的 class 的最佳方法是什么?我可以在复合 class 中放置字段并编写 getter 和 setter 以传递 属性 值,但这将是很多重复的代码。
这里正确的做法是什么?
如何为所有三个 Meta classes 创建接口并让 MetaComposite class 实现所有这三个接口如何。 MetaComposite class 可以实例化正确的 Meta class 并调用它来执行所需的 属性.
这是一个例子:
public interface IMeta1
{
int Metaproperty1 {get; set;}
}
public interface IMeta2
{
int Metaproperty2 {get; set;}
}
public interface IMeta3
{
int Metaproperty3 {get; set;}
}
public class MetaComposite : IMeta1, IMeta2, IMeta3
{
private readonly Meta1 _meta1;
private readonly Meta2 _meta2;
private readonly Meta3 _meta3;
public MetaComposite()
{
_meta1 = new Meta1();
_meta2 = new Meta2();
_meta3 = new Meta3();
}
public int Property1
{
get { return _meta1.Property1; }
set { _meta1.Property1 = value; }
}
public int Property2
{
get { return _meta2.Property2; }
set { _meta2.Property2 = value; }
}
public int Property3
{
get { return _meta3.Property3; }
set { _meta3.Property3 = value; }
}
}
所有属性都在 class 级别的原因是什么? 为什么不直接使用您写的内容?
class MetaComposite
{
public MetaAClass MetaA { get; private set; }
public MetaBClass MetaB { get; private set; }
public MetaCClass MetaC { get; private set; }
public MetaComposite()
{
MetaA = new MetaAClass();
MetaB = new MetaBClass();
MetaC = new MetaCClass();
}
}
public void Main()
{
var composite = new MetaComposite();
composite.MetaA.Field1 = 1;
composite.MetaB.Field2 = '2';
composite.MetaC.Field3 = new MetaDClass();
}