음 아마 비둘기보단 똑똑할꺼야
준돌 Jundol / 2018.01.24 15:39 / C#

문득 싱글톤을 공부하다가 객체의 주소값을 출력해보고싶어졌다.


포인터를 사용하면 간단하게 출력될줄 알았으나 복잡한 방법을 거쳐야 출력이된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            Singleton s1 = Singleton.Instance();
            Singleton s2 = Singleton.Instance();
            
            if (s1 == s2)
            {
                Console.WriteLine("Objects are ths same instance");
                unsafe
                {
                    TypedReference tr1 = __makeref(s1);
                    TypedReference tr2 = __makeref(s2);
                    IntPtr ptr1 = **(IntPtr**)(&tr1);
                    IntPtr ptr2 = **(IntPtr**)(&tr2);
                    Console.WriteLine(ptr1);
                    Console.WriteLine(ptr2);
                }
            }
 
            Console.ReadKey();
        }
    }
 
    class Singleton
    {
        private static Singleton _instance;
        protected Singleton()
        {
 
        }
 
        public static Singleton Instance()
        {
            if (_instance == null)
            {
                _instance = new Singleton();
            }
 
            return _instance;
        }
    }
}
 
cs

위 코드를 보면 unsafe 문 안에 주소를 출력하는 부분이 있다.

변수를 출력하는 방법은 많은데 객체 자체의 주소를 출력하는 글이 없어서 기록해본다.

준돌 Jundol / 2017.01.11 23:01 / C#

닷넷 프레임워크에서는 BundleCollection 을 사용하여 css나 js파일들을 쉽게 로딩할 수 있다.

css나 js파일의 경우 플러그인이 많이 있는 경우에는 로딩되는 순서가 굉장히 중요한데

이게 로딩되는순서가 꼬이거나 지정한 순서로 로딩되지않으면 적용해놓은 설정이나 스크립트가 적용되지않는 문제가 발생한다.

BundleCollection 에서는 default 설정은 알파벳순으로 로딩된다.


이러한 경우를 방지하기 위해 Bundle 을 설정하는 Config cs파일에 아래 코드를 추가해서 내가 Bundle을 설정한 순서대로 로딩되도록 할 수 있다.

1
2
3
4
5
6
7
class NonOrderingBundleOrderer : IBundleOrderer
{
    public IEnumerable<BundleFile> OrderFiles(BundleContext context, IEnumerable<BundleFile> files)
    {
          return files;
    }
}
cs


위 코드를 적용한 사용 예는

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        //Jquery 번들을 만들어보겠다.
        var jqueryJs = new ScriptBundle("~/bundles/jquery").Include(
                            "~/Scripts/jquery.js"
                            ,"~/Scripts/jquery-ui.js");
 
        jqueryJs.Orderer = new NonOrderingBundleOrderer();
        bundles.Add(jqueryJs);
    }
}
 
class NonOrderingBundleOrderer : IBundleOrderer
{
    public IEnumerable<BundleFile> OrderFiles(BundleContext context, IEnumerable<BundleFile> files)
    {
          return files;
    }
}
cs


이처럼 사용하면 된다.

View 나 Layout 파일에서 번들을 로딩하여 사용하면 된다.

1
@Scripts.Render("~/bundles/jquery")
cs


번들사용시 정렬은 굉장히 중요하다.


참고 : http://stackoverflow.com/questions/19323409/asp-net-mvc-bundle-config-order

© 2015 Jundol in 음 아마 비둘기보단 똑똑할꺼야
Designed by DH / Powered by Tistory
141 / 85 / 88,205