我应该如何在C#中实现一个包含某个类型属性的类,然后是一个例子:
public class MyObject{
public someEnum e { get; set;}
public Object ObjectDependentOnE { get; set; }
}
我希望能够为我的对象返回正确的类型,这取决于我的枚举。 例如,如果e = 1,我的对象是T1 ...
类型或者我想尝试做错了
任何想法?
答案 0 :(得分:4)
我不确定你真正想做什么,但似乎你正在寻找仿制药:
public class MyObject<T>
{
public T SomeProperty{get;set;}
}
您可以将T约束到实现给定接口的类。
用法是:
MyObject<SomethingClass> something = new MyObject<SomethingClass>;
答案 1 :(得分:0)
我不确定你的用例是什么 - 更多的信息可能有助于更好地回答这个问题,但根据我的猜测,你可能想要考虑建立一个工厂类。类似的东西:
class MyClass
{
public SomeEnum E { get; set; }
// This might be better as : public Object GetTheObject(SomeEnum E) and eliminating the above property
public Object GetTheObject()
{
switch(this.E)
{
case E.Something:
return new MySomethingObject(); // Or return an instance that already exists...?
default:
return new MyDefaultObject();
}
}
}
这也可以是带有getter和setter的属性,并获取并设置特定的对象类型。
但是,我建议考虑重新考虑这种方法 - 这似乎是一个非常容易出错的设计,因为它在编译时没有类型安全性,并且非常混淆消费者的POV。