问一个循环生成子类的有关问题
问一个循环生成子类的问题
代码如上,其中子类写了2个,实际上有64个,那怎么办?
有没有办法,走一个循环,生成这64个子类呢?(其中1L,1R这些参数我可以放在XML或者数据库里面)
求解答,谢谢!
------解决思路----------------------
你的子类如果没有什么有别于父类的特性,那就不要使用继承,直接实例化父类,并对这些父类对象的属性赋予不同的值即可。
------解决思路----------------------
子类一个都不需要,直接在上面父类里加一个构造函数就完事了。
------解决思路----------------------
代码生成器
其实你可以使用泛型的
------解决思路----------------------
代码生成器的原理都不需要,T4是现成的,如果之前没用过的话,会有点学习成本,否则的话就用for循环拼接字符串,写这个代码也不需要太长时间
------解决思路----------------------
如果非要用这么多子类。可以for循环拼接字符串生成类文件,然后添加到工程就OK了
------解决思路----------------------
最简单的方法,for循环。。。
------解决思路----------------------
如果只是数据不同, 何必要什么子类, 直接赋值就行了.
------解决思路----------------------
你要的不是什么生成子类,你就是想循环出若干实例出来而已。
你就用一个类,循环出实例出来放到list里头跟下面有什么不同吗?
//父类
public class AllChannels
{
public string SoundCardChannelNumber
{
get;
set;
}
//一个包含类
public DirectX_AutoPlayer _DirectX_AutoPlayer;
}
//子类01
public class Channel01 : AllChannels
{
public Channel01()
{
SoundCardChannelNumber = "1L";
_DirectX_AutoPlayer = new DirectX_AutoPlayer(1, 0, "L");
}
}
//子类02
public class Channel02 : AllChannels
{
public Channel02()
{
SoundCardChannelNumber = "1R";
_DirectX_AutoPlayer = new DirectX_AutoPlayer(1, 0, "R");
}
}
代码如上,其中子类写了2个,实际上有64个,那怎么办?
有没有办法,走一个循环,生成这64个子类呢?(其中1L,1R这些参数我可以放在XML或者数据库里面)
求解答,谢谢!
------解决思路----------------------
你的子类如果没有什么有别于父类的特性,那就不要使用继承,直接实例化父类,并对这些父类对象的属性赋予不同的值即可。
------解决思路----------------------
子类一个都不需要,直接在上面父类里加一个构造函数就完事了。
------解决思路----------------------
代码生成器
其实你可以使用泛型的
------解决思路----------------------
代码生成器的原理都不需要,T4是现成的,如果之前没用过的话,会有点学习成本,否则的话就用for循环拼接字符串,写这个代码也不需要太长时间
------解决思路----------------------
如果非要用这么多子类。可以for循环拼接字符串生成类文件,然后添加到工程就OK了
------解决思路----------------------
最简单的方法,for循环。。。
------解决思路----------------------
如果只是数据不同, 何必要什么子类, 直接赋值就行了.
------解决思路----------------------
你要的不是什么生成子类,你就是想循环出若干实例出来而已。
你就用一个类,循环出实例出来放到list里头跟下面有什么不同吗?
List<Channel> list = new List<Channel>();
string[] arr = { "1L", "1R", "3L" };//这个你应该有现成的
//向list循环插入实例
Array.ForEach(arr, p => list.Add(new Channel(p)));
public class Channel
{
public string SoundCardChannelNumber;
public DirectX_AutoPlayer D_AutoPlayer;
public Channel(string s)
{
SoundCardChannelNumber = s;
D_AutoPlayer = new DirectX_AutoPlayer(s);
}
public void DoSomething()
{
MessageBox.Show("我是:" + SoundCardChannelNumber);
}
}