Войти
ПрограммированиеФорумОбщее

Нужна помощь middle\senior

#0
20:05, 19 июля 2021

Никак не доходит до меня, как решить эту задачку?

Ниже представлена часть кода, реализующая абстрактную настройку экземпляров классов
ObjectA и ObjectB неким API. Необходимо реализовать два метода: SetupObjectA и
SetupObjectB, используя Generic-возможности языка и Extension-методы таким образом,
чтобы метод SetupObjectA был доступен только при передаче в метод For аргумента типа
ObjectA, а метод SetupObjectB при передаче аргумента типа ObjectB.

public struct ApiSetup<T>
{ }
class Api
{
public ApiSetup<T> For<T>(T obj)
{
return new ApiSetup<T>();
}
}
interface ISomeInterfaceA
{ }
interface ISomeInterfaceB
{ }
public class ObjectA : ISomeInterfaceA
{ }
public class ObjectB : ISomeInterfaceB
{ }
class SomeClass
{
public void Setup()
{
Api apiObject = new Api();

apiObject.For(new ObjectA()).SetupObjectA();
apiObject.For(new ObjectB()).SetupObjectB();
}
}


#1
(Правка: 20:09) 20:08, 19 июля 2021

Вот вариант более понятный, но не законченный

public struct ApiSetup<T>
{

}
class Api
{
    public ApiSetup<T> For<T>(T obj)
    {
        return new ApiSetup<T>();
    }
}
interface ISomeInterfaceA
{
    void SetupObjectA();
}
interface ISomeInterfaceB
{
    void SetupObjectB();
}
class ObjectA : ISomeInterfaceA
{
    public void SetupObjectA()
    {
       
    }
}
public class ObjectB : ISomeInterfaceB
{
    public void SetupObjectB()
    {

    }
}
class SomeClass : MonoBehaviour
{
   
    public void Setup()
    {
        Api apiObject = new Api();

        apiObject.For(new ObjectA()).SetupObjectA();
        apiObject.For(new ObjectB()).SetupObjectB();
    }
}

#2
0:25, 20 июля 2021

futunn
Напишите универсальную фабрику, подобную следующей

+ Показать
ПрограммированиеФорумОбщее