C# 如何使用不同的类从数组执行方法
我有两门课: 具有字段ID的类T1。 类T2,它继承自T1 类T2具有唯一的字段SomeProperty。 我还有唯一的属性和数组,它包含类型对象T1和T2。我需要通过这个属性获取ID,但我不知道它是如何正确实现的C# 如何使用不同的类从数组执行方法,c#,inheritance,C#,Inheritance,我有两门课: 具有字段ID的类T1。 类T2,它继承自T1 类T2具有唯一的字段SomeProperty。 我还有唯一的属性和数组,它包含类型对象T1和T2。我需要通过这个属性获取ID,但我不知道它是如何正确实现的 public class T_One { protected int id; public T_One(int foo) { id = foo; } public int ID { get { retur
public class T_One
{
protected int id;
public T_One(int foo)
{
id = foo;
}
public int ID
{
get { return id; }
}
}
public class T_Two : T_One
{
protected int someProperty;
public T_Two(int id, int foo) : base(id)
{
someProperty = foo;
}
public int Property
{
get { return someProperty; }
}
}
//I have some solution, but I think it's BAD idea with try-catch.
public int GetObjectIDByProperty(Array Objects, int property)
{
for(int i = 0; i < Objects.Length; i++)
{
try
{
if (((T_Two)(Objects.GetValue(i))).Property == property)
{
return ((T_Two)Objects.GetValue(i)).ID;
}
}
catch
{
//cause object T_one don't cast to object T_Two
}
}
return -1; //Object with this property didn't exist
}
您可以通过强制转换访问该方法 务必事先与is操作员检查类型。后跟强制转换以防止使用try/catch块,还可以使用foreach而不是for来简化代码:
public int GetObjectIDByProperty(Array Objects, int property)
{
foreach(T_One myT_One in Objects)
{
//Check Type with 'is'
if (myT_One is T_Two))
{
//Now cast:
T_Two myT_Two = (T_Two)myT_One;
if (myT_Two.Property == property)
return myT_Two.ID;
}
}
return -1; //Object with this property didn't exist
}
代码,先给我们看看你的代码也许你可以提供一些例子作为代码。我无法理解你想要实现什么。如果没有一些代码,我们只能给你一个答案:M-M-M-magic!您的数组是什么类型的?如果它的对象你可以投射T1,但是你应该有一个T1数组,那么它就像你希望的那样简单,非常感谢你,这就是我需要的操作符!不客气-只是一句小评论:事实上,在将对象强制转换到T_One之前,还应该检查数组中对象的类型,因为运行时无法保证所有对象都是T_One类型。当您使用不从T_One继承的对象扩展列表时,可能会出现异常