C# 如何在C中获取或设置任意类型的对象#
我有一个班级将作为“模型提供者”。基本上这就是它应该做的:C# 如何在C中获取或设置任意类型的对象#,c#,object,casting,generic-collections,C#,Object,Casting,Generic Collections,我有一个班级将作为“模型提供者”。基本上这就是它应该做的: ModelProvider创建多个对象,例如项目和用户。这里的想法是,我可以从应用程序的任何部分调用ModelProvider,以获取最新的用户或项目。此外,从应用程序的任何部分,我都可以将更新的用户或项目推送到模型提供者 简而言之:ModelProvider应该是承载User和Project的最新实例的类 草稿 class ModelProvider { private User user; private Project p
ModelProvider
创建多个对象,例如项目
和用户
。这里的想法是,我可以从应用程序的任何部分调用ModelProvider
,以获取最新的用户
或项目
。此外,从应用程序的任何部分,我都可以将更新的用户
或项目
推送到模型提供者
简而言之:ModelProvider
应该是承载User
和Project
的最新实例的类
草稿
class ModelProvider {
private User user;
private Project project;
public ModelProvider() {
this.user = new User();
this.project = new Project();
}
public void SetModel(T model) {
// If 'model' is of type User, do something like: this.user = model;
// If 'model' is of type Project, do something like: this.project = model;
}
public T GetModel(???) {
// Return the requested model. Either:
// return this.user; or
// return this.project;
}
}
但是,我不知道如何实际获取和设置请求的模型。感谢您的帮助:-)您试图做的事情看起来很奇怪。一种可能更好的方法是提供指定的方法,但这取决于您实际试图实现的目标:
void SetUser(用户用户)
User GetUser()
void SetProject(项目项目)
Project GetProject()
void SetUser(用户用户)
User GetUser()
void SetProject(项目项目)
Project GetProject()
- 你想做的事情看起来很奇怪。一种可能更好的方法是提供指定的方法,但这取决于您实际试图实现的目标:
class ModelProvider<T> // (optionally) where T: baseClassOfUserAndProject
{
private T model;
public void SetModel(T model)
{
this.model = model;
}
public T GetModel()
{
return this.model;
}
}
class ModelProvider//(可选)其中T:baseClassOfUserAndProject
{
私有T模型;
公共模型(T模型)
{
this.model=模型;
}
公共T GetModel()
{
返回此.model;
}
}
您可以将其设置为通用类:
class ModelProvider<T> // (optionally) where T: baseClassOfUserAndProject
{
private T model;
public void SetModel(T model)
{
this.model = model;
}
public T GetModel()
{
return this.model;
}
}
class ModelProvider//(可选)其中T:baseClassOfUserAndProject
{
私有T模型;
公共模型(T模型)
{
this.model=模型;
}
公共T GetModel()
{
返回此.model;
}
}
模型提供程序的意图是在任何给定时间仅拥有用户
或项目
中的一个,而不是同时拥有两个?编辑:此外,这两个对象是否都继承自同一基类/接口?如果您不知道或不关心模型的类型,为什么不将单个模型字段键入为对象(或者用户
和项目
的其他常见基本类型?@ChrisSinclair否,模型提供程序
在任何给定时间都应保留每个实例的一个实例。那么您希望GetModel()方法如何确定它应该返回用户还是项目?@Eddy这就是问题所在:-)ModelProvider
是否打算在任何给定的时间内只拥有user
或project
中的一个,而不是同时拥有两个?编辑:此外,这两个对象是否都继承自同一基类/接口?如果您不知道或不关心模型的类型,为什么不只拥有一个模型
字段类型为对象
(或用户
和项目
的其他常见基本类型?@ChrisSinclair否,模型提供程序
应在任何给定时间保留每个对象的一个实例。那么您如何期望GetModel()方法可以确定它应该返回用户还是项目?@Eddy这就是问题所在:-)我认为称之为“正确的方式”还为时过早,因为OP对他的意图非常不清楚。在我看来,他似乎在试图创建某种通用包装器对象,而他不想关心是否将用户或项目塞进其中。@Eddy:同意。我的答案改写了一点。我认为称之为“正确的方式”是错误的还为时过早,因为OP对他的意图非常不清楚。在我看来,他似乎在试图创建某种通用包装器对象,而他不想关心是否在其中填充用户或项目。@Eddy:同意。将我的答案改写了一点。