刚找到林福-看起来很不错,但我不能
看看如何做我想做的事情-这是mixin的多重继承(构图/委托,就像我在VB5/6天中说的-当我有一个工具来生成冗长的重复委托代码-当我寻找一个C#等价物时,我找到了LinFu)。
public class Person : NEOtherBase, IName, IAge
{
public Person()
{
}
public Person(string name, int age)
{
Name = name;
Age = age;
}
private NameObject _nameObj = new NameObject();
public string Name
{
get { return _nameObj.Name; }
set { _nameObj.Name = value; }
}
private AgeObject _ageObj = new AgeObject();
public int Age
{
get { return _ageObj.Age; }
set { _ageObj.Age = value; }
}
}
public interface IName
{
string Name { get; set; }
}
public class NameObject : IName
{
public NameObject()
{}
public NameObject(string name)
{
_name = name;
}
private string _name;
public string Name { get { return _name; } set { _name = value; } }
}
public interface IAge
{
int Age { get; set; }
}
public class AgeObject : IAge
{
public AgeObject()
{}
public AgeObject(int age)
{
_age = age;
}
private int _age;
public int Age { get { return _age; } set { _age = value; } }
}
想象一下有更多属性的对象,在更多的“子类”中使用,你就会开始看到单调乏味。代码格伦工具实际上是
好的
...
所以,临福。。。。
班
(如上)-临福式的做法是什么?或者我错过了全部要点?
编辑:我需要能够这样做的类已经是子类。
DynamicObject dynamic = new DynamicObject();
IPerson person = null;
bool isPerson = dynamic.LooksLike<IPerson>();
dynamic.MixWith(new HasAge(18));
dynamic.MixWith(new Nameable("Me"));
isPerson = dynamic.LooksLike<IPerson>();
if (isPerson)
person = dynamic.CreateDuck<IPerson>();
string name = person.Name;
int age = person.Age;