Rasagar/Library/PackageCache/com.unity.render-pipelines.core/Editor-PrivateShared/AssemblyInfo.cs
2024-08-26 23:07:20 +03:00

114 lines
3.5 KiB
C#

using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("Unity.RenderPipelines.HighDefinition.Editor")]
[assembly: InternalsVisibleTo("Unity.RenderPipelines.Universal.Editor")]
//WARNING:
// Remember to only use this shared API to cherry pick the code part that you want to
// share but not go directly in user codebase project.
// Every new entry here should be discussed. It is always better to have good public API.
// Don't add logic in this assemblie. It is only to share private methods. Only redirection allowed.
/*EXAMPLE:
//In Unity.RenderPipeline.Core.Editor:
namespace TestNamespace
{
public class PublicType
{
internal static void StaticDoSomething() { }
internal void InstanceDoSomething() { }
}
internal class InternalType
{
internal static void StaticDoSomething() { }
internal void InstanceDoSomething() { }
}
}
//In Unity.RenderPipeline.Core.Editor.Shared:
namespace TestNamespace.Shared
{
internal static class PublicType
{
public static void StaticDoSomething()
=> TestNamespace.PublicType.StaticDoSomething();
public static void InstanceDoSomething(TestNamespace.PublicType publicType)
=> publicType.InstanceDoSomething();
internal struct Wrapper
{
TestNamespace.PublicType m_wrapped;
public Wrapper(TestNamespace.PublicType publicTypeInstance)
=> m_wrapped = publicTypeInstance;
public void InstanceDoSomething()
=> m_wrapped.InstanceDoSomething();
}
}
internal static class InternalType
{
public static void StaticDoSomething()
=> TestNamespace.InternalType.StaticDoSomething();
public static void InstanceDoSomething(object objectCastedInternalType)
=> (objectCastedInternalType as TestNamespace.InternalType).InstanceDoSomething();
internal struct Wrapper
{
TestNamespace.InternalType m_wrapped;
public Wrapper(object objectCastedInternalType)
=> m_wrapped = objectCastedInternalType as TestNamespace.InternalType;
public void InstanceDoSomething()
=> m_wrapped.InstanceDoSomething();
}
}
}
//In Unity.RenderPipeline.Universal.Editor:
class TestPrivateAPIShared
{
void CallStaticMethodOfPublicType()
=> TestNamespace.Shared.PublicType.StaticDoSomething();
void CallInstanceMethodOfPublicTypeThroughStatic()
{
var instance = new TestNamespace.PublicType();
TestNamespace.Shared.PublicType.InstanceDoSomething(instance);
}
void CallInstanceMethodOfPublicTypeThroughWrapper()
{
var instance = new TestNamespace.PublicType();
var wrapper = new TestNamespace.Shared.PublicType.Wrapper(instance);
wrapper.InstanceDoSomething();
}
void CallStaticMethodOfInternalType()
=> TestNamespace.Shared.InternalType.StaticDoSomething();
void CallInstanceMethodOfInternalTypeThroughStatic()
{
var instance = new object(); //get the object via an API instead
TestNamespace.Shared.InternalType.InstanceDoSomething(instance);
}
void CallInstanceMethodOfInternalTypeThroughWrapper()
{
var instance = new object(); //get the object via an API instead
var wrapper = new TestNamespace.Shared.InternalType.Wrapper(instance);
wrapper.InstanceDoSomething();
}
}
*/