我有一个由更多存储附加信息的类实现的接口。而且我需要能够在不明确说明这是一个实现的情况下转换实现。
public interface IAnimal
{
string Name { get; set; }
Type GetType();
}
public class Dog : IAnimal
{
public string Name { get; set; }
Type GetType() {return typeof(Dog);}
public int TimesBarked { get; set; }
}
public class Rhino : IAnimal
{
public string Name { get; set; }
Type GetType() {return typeof(Rhino);}
public bool HasHorn { get; set; }
}
通过大部分代码,我可以毫无问题地使用接口,但在某些时候我需要将实现转换为原始类型。
IAnimal animal = new Dog
{
Name = "Ben",
TimesBarked = 30
}
// Doing stuff with Ben
// In some other function
AnotherObject.SomeMethodThatNeedsToKnowType(animal) //Needs to be Converted before putting here
我不知道我会得到哪个对象,所以我必须制作一些可以将任何东西转换为其原始类型的东西。不幸的是没有Convert.ChangeType(animal, animal.GetType())返回。我可以更改接口及其实现,但不能更改方法。object{Dog}Dog
开满天机
慕雪6442864
UYOU
相关分类