Полагаю, ваша проблема в том, что типы разные?Если это так, то вы можете либо создать интерфейс, от которого наследуются оба объекта, либо создать базовый класс (или оба).Затем вы можете создать метод, как вы описали, где ожидаемым параметром является интерфейс вашего интерфейса или базового класса.После этого вы сможете передать любой объект, который наследуется от этого типа.
Фактически вы могли бы создать базовый класс таким образом, чтобы он.
ИЛИ, вы могли бы использовать dynamic , но вы потеряете все преимущества статической проверки типов.Если у вас есть контроль над вашими классами, я бы не стал этого предлагать, поскольку .NET - это статический язык.Только для удобства крайнего случая они добавили этот тип.Но, опять же, это только мое мнение о динамическом
Пример:
//This is the base class option, but you could use an interface
//If you encapsulate the FillProperties method it should be in a base class, though
public class BaseViewModel
{
int memID {get;set;}
int caseUserID {get;set;}
bool isMember {get;set;}
bool isUser {get;set;}
public void FillProperties()
//These actions could also possibly be done on the fly in the properties
{
memID = (WebSessions.IsCUser) ? 0 : WebSessions.MemID;
caseUserID = (WebSessions.IsCUser) ? WebSessions.CUserID : 0;
isMember = !(WebSessions.IsCUser);
isUser = (WebSessions.IsCUser);
}
}
public class Activity : BaseViewModel
{
//additional properties for Activity only
}
public class OpenTask : BaseViewModel
{
//additional properties for OpenTask only
}
Тогда вы можете просто назвать это так
var activity = new Activity();
activity.FillProperties();
Или вы можете удалитьЗаполните свойства другого класса, как вы описали, и сделайте что-то вроде этого:
GetValuesForUserORMember(BaseViewModel thisView)
{
thisView.memID = (WebSessions.IsCUser) ? 0 : WebSessions.MemID;
thisView.caseUserID = (WebSessions.IsCUser) ? WebSessions.CUserID : 0;
thisView.isMember = !(WebSessions.IsCUser);
thisView.isUser = (WebSessions.IsCUser);
}