【发布时间】:2015-11-18 22:11:39
【问题描述】:
我的代码:
class ClassX;
class Class2 : ClassX;
class Class3 : ClassX;
Class2 和 Class3 之间没有任何关联,除非它们共享相同的基类。 Class2 和 Class3 不共享相同的属性、数据类型或属性数量。
现在,我想做的是:
class Class<T> : T;
static void Main()
{
Class<Class2> foo = new Class<Class2>();
foo.Class2_Property = value;
Console.Read();
}
我知道这个代码是不可能的,但是有什么解决办法吗?
在 C++ 中,您可以使用运算符重载来执行此操作:
public : operator return_data_type const;
提前致谢。
PS:我已经提出了一个关于这个right here 的问题,但我不确定如何提出我的问题,但我现在知道了。我将其保持打开状态,以防有人通过我得到的答案找到他们问题的答案。
编辑#1:
我有一个 Packet 类,它具有共享的 Packet 属性和方法,不同的数据包有自己的标头和不同的内容。我正在改变我的数据包系统。基本上我想做Packet,其中PacketClass 是特定Packet 的名称,例如LoginInfo。 LoginInfo 类将包含属性:
public PacketHeader Header;
public string Username;
public string Password;
因此:
Packet<LoginInfo> foo = new Packet<LoginInfo>();
foo.Username = "user";
byte[] buf = foo.ToArray(); // Part of the Packet<T> class
这就是我的意思,每个类都有它自己的属性。我希望这能让您对我正在尝试做的事情有所了解。
【问题讨论】:
-
你想达到什么目的?
-
这似乎是XY problem
-
您不能在 C# 中以这种方式包装
T,因为 C++ 模板和 C# 泛型之间的性质不同。所以,最好解释一下,你打算如何/何时/在哪里使用它。 -
恐怕你的建议无济于事,Sayse。我建议我的想法,你可以在其中发展。我不知道,我不认为这是一个 XY 问题。我在主要帖子 dcastro 中要求解决方法。 @haim770,丹尼斯:我更新了主帖,用一个更清晰的例子来说明我想要做什么。
标签: c# inheritance types properties parameters