您好,我很想知道如何在 C# 中创建可以是多种类型的构造函数属性。
我可以按照下面的方式在 python 中生成我想要的内容。IE 初始化“this_thing”类的对象,该对象可以采用“thing”或“thingy”类的对象。
与我想做的事情等效的Python工作是:
class thing:
def __init__(self, number):
self.number = number
@property
def number(self):
return self._number
@number.setter
def number(self, value):
if not isinstance(value, int):
raise TypeError('"number" must be an int')
self._number = value
class thingy:
def __init__(self, text):
self.text= text
@property
def text(self):
return self._text
@text.setter
def text(self, value):
if not isinstance(value, str):
raise TypeError('"text" must be a str')
self._text = value
class this_thing:
def __init__(self, chosen_thing, name_of_the_thing):
self.chosen_thing = chosen_thing
self.name_of_the_thing = name_of_the_thing
@property
def chosen_thing(self):
return self._chosen_thing
@chosen_thing.setter
def chosen_thing(self, value):
if (not isinstance(value, (thing, thingy))):
raise TypeError('"chosen_thing" must be a thing or thingy')
self._chosen_thing = value
@property
def name_of_the_thing(self):
return self._name_of_the_thing
@name_of_the_thing.setter
def name_of_the_thing(self, value):
if not isinstance(value, str):
raise TypeError('"name_of_the_thing" must be a str')
self._name_of_the_thing = value
some_thing = thing(10)
another_thing = thingy("10")
new_thing = this_thing(some_thing, "Some Thing")
another_new_thing = this_thing(another_thing, "Another Thing")
在 C# 中,我有独立工作的“Thing”和“Thingy”类。但我想创建一个新类“ThisThing”,它可以采用“Thing”类或“Thingy”类的对象,但我不确定如何启用此操作。
在 C# 中尝试之后,看起来最可行的解决方案是将“ThisThing”类分成两个单独的类。看来 C# 在操作类类型方面不如 Python 灵活。当然,如果您知道如何在 C# 中重现上述 python 代码,请发表评论。知道的话会很方便。
泛舟湖上清波郎朗
相关分类